HTTP requests with basic authentication

前端 未结 4 1743
悲&欢浪女
悲&欢浪女 2020-12-07 23:10

I have to download and parse XML files from http server with HTTP Basic authentication. Now I\'m doing it this way:

URL url = new URL(\"http         


        
4条回答
  •  北荒
    北荒 (楼主)
    2020-12-07 23:55

    You can use an Authenticator. For example:

    Authenticator.setDefault(new Authenticator() {
     @Override
            protected PasswordAuthentication getPasswordAuthentication() {
             return new PasswordAuthentication(
       "user", "password".toCharArray());
            }
    });
    

    This sets the default Authenticator and will be used in all requests. Obviously the setup is more involved when you don't need credentials for all requests or a number of different credentials, maybe on different threads.

    Alternatively you can use a DefaultHttpClient where a GET request with basic HTTP authentication would look similar to:

    HttpClient httpClient = new DefaultHttpClient();
    HttpGet httpGet = new HttpGet("http://foo.com/bar");
    httpGet.addHeader(BasicScheme.authenticate(
     new UsernamePasswordCredentials("user", "password"),
     "UTF-8", false));
    
    HttpResponse httpResponse = httpClient.execute(httpGet);
    HttpEntity responseEntity = httpResponse.getEntity();
    
    // read the stream returned by responseEntity.getContent()
    

    I recommend using the latter because it gives you a lot more control (e.g. method, headers, timeouts, etc.) over your request.

提交回复
热议问题