gpt4 book ai didi

android - 如何使用android的httpURLconnection设置授权 header

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:57:32 28 4
gpt4 key购买 nike

我正在尝试使用基本身份验证连接到我的服务器,但是当我设置授权 header 时,它会导致 getInputStream 抛出 fileNotFound 异常。

相关代码如下:

        URL url = new URL(myurl);
//set up the connection
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000);//this is in milliseconds
conn.setConnectTimeout(15000);//this is in milliseconds
String authHeader = getAuthHeader(userID,pass);
conn.setRequestMethod("GET");
conn.setDoInput(true);
conn.setRequestProperty("authorization", authHeader);
//starts the query
conn.connect();
int response = conn.getResponseCode();
is = conn.getInputStream(); //throws the fileNotFound exception

这是抛出的异常:

java.io.FileNotFoundException: http://<myIPaddress>/login/

奇怪的是,我发现 fileNotFound 异常在我尝试将请求属性设置为“authorization”或“Authorization”或该词的任何变体时抛出。如果我将它设置为“content-type”或“authosodifjsodfjs”(随机字符串),它不会抛出,如下所示:

conn.setRequestProperty("content-type",authHeader)//no exception thrown
conn.setRequestProperty("authosodifjsodfjs",authHeader)//no exception thrown

如果我不设置此 header ,我可以使用此代码连接到服务器并获得我期望的正确访问拒绝消息。如果我使用 python 的“请求”模块,我也能够连接到服务器并正确登录,所以这不是服务器的问题。

所以我的问题如下:

1) 将请求属性设置为“授权”时,我做错了什么(如果有的话)?如何正确设置身份验证 header ?

2) 如果这是 HttpURLConnection 的错误,我该如何提交错误报告?

谢谢。

编辑:建议切换自:

conn.setRequestProperty("Authorization", authHeader);

到:

conn.addRequestProperty("Authorization", authHeader);

这并没有解决问题。它仍然抛出相同的异常。

编辑:仍然不确定为什么“授权”和“授权”会导致 fileNotFounExceptions,但使用全部大写似乎可以正常工作。这是 Shiny 的新工作代码:

conn.setRequestProperty("AUTHORIZATION",authHeader);

所以看起来它需要全部大写。 “HTTP_”将自动添加到此 header 的前面,因此服务器将看到的 header 是“HTTP_AUTHORIZATION”,这是它应该的样子。

最佳答案

这是我设置授权 header 的 OAuth 代码的一部分:

httpUrlConnection.setUseCaches(false);
httpUrlConnection.setRequestProperty("User-Agent", "MyAgent");
httpUrlConnection.setConnectTimeout(30000);
httpUrlConnection.setReadTimeout(30000);

String baseAuthStr = APIKEY + ":" + APISECRET;
httpUrlConnection.addRequestProperty("Authorization", "Basic " + baseAuthStr);
httpUrlConnection.addRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

httpUrlConnection.connect();

关于android - 如何使用android的httpURLconnection设置授权 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34402554/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com