繁体   English   中英

401使用HttpURLConnection Android发生未经授权的错误?

[英]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”,该方法要求使用Javahttp://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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM