![](/img/trans.png)
[英]Android 401 Error connecting to REST service using HttpURLConnection
[英]401 Unauthorized Error using HttpURLConnection Android?
我们进行了搜索,但似乎仍然无法解决该问题。 我们有一个REST Web服务,正在尝试从我们的Android应用程序访问它。 从Web浏览器或从Chrome中的Advanced Rest Client扩展访问Web服务URL即可。 我们的网址如下所示:
http://10.52.1.1:8080/GPService/Tenants(Name=DefaultTenant)/Companies(Fabrikam,%20Inc.)/Items(128%20SDRAM).JSON
并将其输入浏览器后,系统会提示您输入凭据。 输入凭据后,将返回JSON结果。
在我们的Android应用中,我们尝试以下操作:
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("domain\\user", "password".toCharArray());
}
});
URL url = new URL(urlstring);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(false);
conn.setDoInput(true);
conn.setRequestMethod("GET");
conn.setConnectTimeout(60000);
InputStream istream = conn.getInputStream();
有什么想法我们做错了吗? 我们尝试了不同的方法,类似于此“ 连接到远程URL”,该方法要求使用Java和http://www.muneebahmad.com/index.php/archives/127进行 身份验证 ,但没有成功,但我们不断收到401未经授权的错误。
根据收到的评论:我们的服务正在使用NTLM身份验证。
谢谢你的帮助!
conn.setRequestProperty(“ Authorization”,“ Basic” + Base64.encodeToString(“ usernameUsed:passwordUsed” .getBytes(),Base64.NO_WRAP));
上面的代码为我工作。
我遇到过同样的问题。 就我而言,我正在发送时间戳(基本编码)作为标头之一。 设备(我正在测试)的时间设置为过去的时间,这导致授权失败。
(我知道这篇文章很旧。只是补充我的经验,对某人可能有用)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.