2012-04-04 127 views
9

我使用Apache HttpComponents访问Web服务和唐”知道如何在请求中设置用户名/密码,这里是我的代码:如何设置HTTPGET用户名/密码

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); 

..

但仍得到了401未经授权错误。

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] 

我不确定它是否设置用户/密码的正确方法?任何人都可以帮忙谢谢。

回答

4

我认为你是在正确的轨道上。也许你应该检查你的用户凭证,因为http error response可能意味着不正确的用户名/密码,或者用户没有权限访问资源。我有下面的代码,我做基本的HTTP身份验证,它工作正常。

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(); 
     } 

    } 

} 
相关问题