I use Apache HttpComponents to access a web service, and don' know how to set user/password in the request, here is my code:
URI url = new URI(query);
HttpGet httpget = new HttpGet(url);
DefaultHttpClient httpclient = new DefaultHttpClient();
Credentials defaultcreds = new UsernamePasswordCredentials("test", "test");
httpclient.getCredentialsProvider().setCredentials(new AuthScope(HOST, AuthScope.ANY_PORT), defaultcreds);
HttpResponse response = httpclient.execute(httpget);
..
but still it got the 401 unauthorized error.
HTTP/1.1 401 Unauthorized [Server: Apache-Coyote/1.1, Pragma: No-cache, Cache-Control: no-cache, Expires: Wed, 31 Dec 1969 16:00:00 PST, WWW-Authenticate: Basic realm="MemoryRealm", Content-Type: text/html;charset=utf-8, Content-Length: 954, Date: Wed, 04 Apr 2012 02:28:49 GMT]
I m not sure if its the right way to set user/password? anyone can help? thanks.
I think you are on the right track. Perhaps you should check your user credential as the http error response could probably means incorrect username/password or the user does not have the privilege to access the resources. I have the below code which I do basic http authentication and it is working fine.
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
public class Authentication
{
public static void main(String[] args)
{
DefaultHttpClient dhttpclient = new DefaultHttpClient();
String username = "abc";
String password = "def";
String host = "abc.example.com";
String uri = "http://abc.example.com/protected";
try
{
dhttpclient.getCredentialsProvider().setCredentials(new AuthScope(host, AuthScope.ANY_PORT), new UsernamePasswordCredentials(username, password));
HttpGet dhttpget = new HttpGet(uri);
System.out.println("executing request " + dhttpget.getRequestLine());
HttpResponse dresponse = dhttpclient.execute(dhttpget);
System.out.println(dresponse.getStatusLine() );
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
dhttpclient.getConnectionManager().shutdown();
}
}
}