https://doc.sm.ms/ getToken 接口,发现 java 的 okhttp4 调用返回 403,使用 postman 与 python requests 调用成功。 java okhttp4 不成功
python requests 成功代码
postman 测试成功代码
问题出在哪了,百思不得其姐。 其实使用 fiddler 抓了下两者 http 的包,发现没有区别,https 不知道怎么用 fiddler 抓,okhttp4 问题出在 https 证书上面了嘛?
1 dadaoqueyi OP 有使用 okhttp4 的大佬嘛,另外纯 java 非 android 使用 okhttp4 需要额外引用 kotlin-stdlib,okhttp4 有没有纯 java 语言的客户端,这样会不会有效率问题  |
![]() | 2 jdkl 2020-09-11 16:56:36 +08:00 via Android 升级到 jdk 到 1.8.0_212 之前的 1.8 这方面有 bug |
![]() | 3 monkeyWie 2020-09-11 16:56:43 +08:00 java http 方式请求也不行吗,还是 https 不行,另外截图里的 apiUrl 为啥是 http://https:// |
4 earther01 2020-09-11 16:58:04 +08:00 前一段遇到类似的问题,https 请求用 postman 可以调通,用 java 的 httpClient 死活不通,换了 OKhttp 好了 |
5 dadaoqueyi OP |
6 dadaoqueyi OP @earther01 http4.5 跟 okhttp4 都试过了,都是 403 |
7 dadaoqueyi OP @jdkl 我试下,现在版本 java version "1.8.0_261",看看升级有没有用,thankyou |
8 dadaoqueyi OP @dadaoqueyi 我擦,看错了,我的版本号比 1.8.0_212 要高呀是 1.8.0_261 |
9 dadaoqueyi OP 安装了下 jdk11,okhttp 使用还是 403 |
![]() | 10 monkeyWie 2020-09-11 17:24:12 +08:00 @dadaoqueyi 这个问题应该是 cloudflare 安全检查,确实是 TLS 的问题,参考这个帖子: t/654469#reply71 |
![]() | 11 chendy 2020-09-11 17:30:35 +08:00 403 的报错内容是啥…只有一个 403 头? |
12 mamasan 2020-09-11 17:31:03 +08:00 加个.addHeader("User-Agent", "PostmanRuntime/7.26.5") |
13 dadaoqueyi OP @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 dadaoqueyi OP @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 dadaoqueyi OP @monkeyWie 下班下班,获取我再试下 |
16 mamasan 2020-09-11 17:37:35 +08:00 @dadaoqueyi response.body().string() |
17 dadaoqueyi OP @mamasan 回家我在试下 |
18 dadaoqueyi OP @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())成功拿到结果 |
19 zcw159357 2020-09-11 19:01:01 +08:00 @dadaoqueyi 第二张图……打码!漏了 |
20 dadaoqueyi OP @zcw159357 你在仔细看看,没漏吧 |
21 zcw159357 2020-09-11 19:50:41 +08:00 @dadaoqueyi traceback 里…… |
22 dadaoqueyi OP @zcw159357 汗汗汗,密码,token 我改掉了,此贴删除 |
23 zcw159357 2020-09-11 20:29:11 +08:00 @dadaoqueyi 咦 删帖只是从列表里去掉吗……感觉还能访问到呢 |
24 dadaoqueyi OP @zcw159357 删不了,我改密码了 |