使用HttpURLConnection添加自定义标头

问题描述 投票:0回答:1

我正在尝试发送http GET请求。这是请求的样子:

https://example.com/verify?name="A"&grade="A"

Header: "myheader":"abcde1213"

这是一个自定义标头,用于验证此请求的发件人。

我用Postman和curl尝试了这个并且它有效。但是,当我尝试在Android中使用HttpURLConnection在代码中执行此操作时,我总是从服务器收到401错误 - 表示上述密钥的身份验证不起作用。

我在代码中添加的内容:

URL obj = new URL(GetURL);
HttpURLConnection con = obj.openConnection();
 con.setRequestMethod("GET");
con.addRequestProperty("myheader","abcde1213");

我甚至做了一个getRequestProperty(“myheader”)并验证它返回正确的值。

但是,服务器没有获取此值并且给出了401错误。经过进一步调查,结果显示http请求参数和标题不同。上面的addRequestParameter或setRequestParameter函数仅添加或更新http请求参数,不设置标头。

通过快速在线搜索,我在HttpURLConnection中看不到任何合适的方法来添加标头。请建议我们如何做到这一点。

如上所述,带有上述标头的这个http请求确实可以在curl和Postman上运行而没有任何错误 - 这告诉我使用标头的请求和身份验证确实有效。但是,使用上面的HttpUrlConnection类没有正确设置标头。

提前致谢!

编辑:我查看了共享的链接。问这个问题的人可能和我有同样的问题,但提供的解决方案似乎有所不同。在这里,我试图通过在http请求中使用自定义标头来授权用户,这是我正在与之交谈的Rest API服务器所特有的。

这是我无法添加的自定义标头。在发布此处之前,我已经尝试了大多数建议的解决方案。

注意:想重申 - 上述请求适用于curl和Postman。邮递员可以选择生成请求所需的代码,但对于Java,它只使用一些库而不是HttpURLConnection方法。

java android httpurlconnection
1个回答
0
投票

善意地使用这样的:

URL url = new URL("your string url");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
String token = "" + new String(accessToken);
con.setRequestMethod("GET");
con.setRequestProperty("AuthToken", token);
con.setReadTimeout(15000);
con.setConnectTimeout(15000);
con.setDoOutput(false);
© www.soinside.com 2019 - 2024. All rights reserved.