2012-04-04 14 views
9

Ich benutze Apache Httpcomponents für den Zugriff auf einen Web-Service zu setzen, und don‘wissen, wie Benutzer/Passwort in der Anforderung zu setzen, hier ist mein Code:wie Benutzername/Passwort in 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); 

..

aber immer noch hat es die 401 nicht autorisierten Fehler.

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] 

Ich bin nicht sicher, ob es der richtige Weg ist, um Benutzer/Passwort zu setzen? kann jemand helfen? Vielen Dank.

Antwort

4

Ich denke, Sie sind auf dem richtigen Weg. Vielleicht sollten Sie Ihre Benutzerberechtigung überprüfen, da http error response möglicherweise einen falschen Benutzernamen/ein falsches Passwort bedeutet oder der Benutzer nicht berechtigt ist, auf die Ressourcen zuzugreifen. Ich habe den folgenden Code, den ich grundlegende HTTP-Authentifizierung tun, und es funktioniert gut.

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

    } 

} 
Verwandte Themen