非常诡异的问题:httpclient 必须显式设置 headers,无论传入常量变量都报错

2021-09-07 14:38:25 +08:00
 VKRUSSIA

在我封装的类里调用某涯网的 api 发现非常诡异的现象:

httpclient(无论任何 http 库)必须显式设置 headers 否则无论传入常量变量都报错

就是必须以 HttpRequest.get("someurl").headers(new HashMap<String,String>({{put('','');}}).body;的形式

如果是动态传入常量或变量

HashMap<String,String> h=new HashMap<String,String>({{ put('',''); }} HttpRequest.get("someurl").headers(h).body;

死活回显

{"code":"0","success":0,"message":"未知客户端请求","data":{}}

正常应该是

{"code":"1","success":1,"message":"成功","data":{}}

而我在 main 方法直接用同一 http 库动态传入 headers 调用接口却不会有这个错误.

这是什么情况?

1302 次点击
所在节点    Java
6 条回复
ch2
2021-09-07 14:42:30 +08:00
抓 http 报文看一下就知道了
sutra
2021-09-07 14:45:26 +08:00
要设置 User-Agent 吧?
VKRUSSIA
2021-09-07 16:17:09 +08:00
@sutra 这里只是演示所以是空的,经过反复确认 headers 是一模一样可就是不行
sutra
2021-09-07 17:01:22 +08:00
如果仔细看你给的代码,我都没看出来它俩有什么区别。
kingfalse
2021-09-07 18:29:21 +08:00
jsoup.connect()方法了解一下,hc 这玩意太重了
VKRUSSIA
2021-12-11 17:16:56 +08:00
粗心了。原来是 md5 大小写的原因,此贴终结

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/800396

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX