https://doc.sm.ms/ getToken 接口,发现 java 的 okhttp4 调用返回 403,使用 postman 与 python requests 调用成功。
java okhttp4 不成功

python requests 成功代码

postman 测试成功代码

问题出在哪了,百思不得其姐。 其实使用 fiddler 抓了下两者 http 的包,发现没有区别,https 不知道怎么用 fiddler 抓,okhttp4 问题出在 https 证书上面了嘛?
https://doc.sm.ms/ getToken 接口,发现 java 的 okhttp4 调用返回 403,使用 postman 与 python requests 调用成功。
java okhttp4 不成功

python requests 成功代码

postman 测试成功代码

问题出在哪了,百思不得其姐。 其实使用 fiddler 抓了下两者 http 的包,发现没有区别,https 不知道怎么用 fiddler 抓,okhttp4 问题出在 https 证书上面了嘛?
|
1
有使用 okhttp4 的大佬嘛,另外纯 java 非 android 使用 okhttp4 需要额外引用 kotlin-stdlib,okhttp4 有没有纯 java 语言的客户端,这样会不会有效率问题
 |
|
jdklSep 11, 2020 via Android
2
升级到 jdk 到 1.8.0_212 之前的 1.8 这方面有 bug
|
|
monkeyWieSep 11, 2020
3
java http 方式请求也不行吗,还是 https 不行,另外截图里的 apiUrl 为啥是 http://https://
|
|
earther01Sep 11, 2020
4
前一段遇到类似的问题,https 请求用 postman 可以调通,用 java 的 httpClient 死活不通,换了 OKhttp 好了
|
|
5
|
|
6
@earther01 http4.5 跟 okhttp4 都试过了,都是 403
|
|
7
@jdkl 我试下,现在版本 java version "1.8.0_261",看看升级有没有用,thankyou
|
|
8
@dadaoqueyi 我擦,看错了,我的版本号比 1.8.0_212 要高呀是 1.8.0_261
|
|
9
安装了下 jdk11,okhttp 使用还是 403
|
|
monkeyWieSep 11, 2020
10
@dadaoqueyi 这个问题应该是 cloudflare 安全检查,确实是 TLS 的问题,参考这个帖子: https://www.v2ex.com/t/654469#reply71
|
|
chendySep 11, 2020
11
403 的报错内容是啥…只有一个 403 头?
|
|
mamasanSep 11, 2020
12
加个.addHeader("User-Agent", "PostmanRuntime/7.26.5")
|
|
13
@chendy 17:33:01.402 [main] INFO vip.codehome.imghost.util.SMMSApiUtil - Response{protocol=h2, code=403, message=, url=https://sm.ms/api/v2/token}
|
|
14
@mamasan 17:34:51.397 [main] INFO vip.codehome.imghost.util.SMMSApiUtil - Response{protocol=h2, code=200, message=, url=https://xxxxxxxxxxxi/v2/token}
加个头是 200,但是 token 没拿到,python Requests 也没加头 |
|
15
@monkeyWie 下班下班,获取我再试下
|
|
mamasanSep 11, 2020
16
@dadaoqueyi
response.body().string() |
|
17
@mamasan 回家我在试下
|
|
18
@mamasan Request request=new Request.Builder()
.url(apiUrl) .post(formBody) .addHeader("Authorization",secret) .addHeader("User-Agent", "aa") .build(); Call call=client.newCall(request); try { Response response=call.execute(); log.info(new String(response.body().bytes())); return response.toString(); }catch(IOException e) { throw new RuntimeException("网络请求失败",e); } } //加了个 User-Agent 头,用 new String(response.body().bytes())成功拿到结果 |
|
zcw159357Sep 11, 2020
19
@dadaoqueyi 第二张图……打码!漏了
|
|
20
@zcw159357 你在仔细看看,没漏吧
|
|
zcw159357Sep 11, 2020
21
@dadaoqueyi traceback 里……
|
|
22
@zcw159357 汗汗汗,密码,token 我改掉了,此贴删除
|
|
zcw159357Sep 11, 2020
23
@dadaoqueyi 咦 删帖只是从列表里去掉吗……感觉还能访问到呢
|
|
24
@zcw159357 删不了,我改密码了
|