2016-12-07 90 views
1

我使用HttpURLConnection类来管理我的Android应用程序中的HTTP连接。问题是,在某些服务器上,我有一个代码使用在互联网浏览器上工作的URL。我使用基本身份验证初始化连接,但我认为这些服务器需要其他模式。我知道它的工作原理与的libcurl和下面的指令:HttpURLConnection身份验证模式

curl_easy_setopt(pCurlHandle, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 

但有一个办法做这样的事情在Android?目前,我这样做:

... 
connection.setRequestProperty("Authorization", "Basic " + Base64.encode("username:password")); 
... 

Authenticator尝试过:

Authenticator.setDefault(new Authenticator() { 

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

但我仍然有我的应用程序401。任何想法?

回答

1

好,this post真的帮了我(但我不使用Authenticator类的话),现在我的代码做这样的工作(如果需要认证):

  • 初始化我HttpURLConnection基本验证(见我的问题的代码中的第一个Java样本)

  • 测试对象,如果我收到一个代码为401,如果是,则检查服务器是例外的摘要验证分析响应头。

  • 重试和手工建造文摘请求属性(看看我所提到的职位)

  • 和它的作品!

我希望这个答案能帮助别人!