• 请不要在回答技术问题时复制粘贴 AI 生成的内容
dadaoqueyi
V2EX  ›  程序员

Java OKhttp4.0 与 Python Requests、Postman 区别

  •  
  •   dadaoqueyi ·
    mytianya · Sep 11, 2020 · 4733 views
    This topic created in 2250 days ago, the information mentioned may be changed or developed.

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

    python requests 成功代码 image.png

    postman 测试成功代码

    image.png

    问题出在哪了,百思不得其姐。 其实使用 fiddler 抓了下两者 http 的包,发现没有区别,https 不知道怎么用 fiddler 抓,okhttp4 问题出在 https 证书上面了嘛?

    dadaoqueyi
    dadaoqueyi
    OP
    Sep 11, 2020
    1
    有使用 okhttp4 的大佬嘛,另外纯 java 非 android 使用 okhttp4 需要额外引用 kotlin-stdlib,okhttp4 有没有纯 java 语言的客户端,这样会不会有效率问题
    ![image.png]( https://i.loli.net/2020/09/11/XyAmvBe6UDEluHG.png)
    jdkl
    jdkl
    Sep 11, 2020 via Android
    2
    升级到 jdk 到 1.8.0_212 之前的 1.8 这方面有 bug
    monkeyWie
    monkeyWie
    Sep 11, 2020
    3
    java http 方式请求也不行吗,还是 https 不行,另外截图里的 apiUrl 为啥是 http://https://
    earther01
    earther01
    Sep 11, 2020
    4
    前一段遇到类似的问题,https 请求用 postman 可以调通,用 java 的 httpClient 死活不通,换了 OKhttp 好了
    dadaoqueyi
    dadaoqueyi
    OP
    Sep 11, 2020
    6
    @earther01 http4.5 跟 okhttp4 都试过了,都是 403
    dadaoqueyi
    dadaoqueyi
    OP
    Sep 11, 2020
    7
    @jdkl 我试下,现在版本 java version "1.8.0_261",看看升级有没有用,thankyou
    dadaoqueyi
    dadaoqueyi
    OP
    Sep 11, 2020
    8
    @dadaoqueyi 我擦,看错了,我的版本号比 1.8.0_212 要高呀是 1.8.0_261
    dadaoqueyi
    dadaoqueyi
    OP
    Sep 11, 2020
    9
    安装了下 jdk11,okhttp 使用还是 403
    monkeyWie
    monkeyWie
    Sep 11, 2020
    10
    @dadaoqueyi 这个问题应该是 cloudflare 安全检查,确实是 TLS 的问题,参考这个帖子: https://www.v2ex.com/t/654469#reply71
    chendy
    chendy
    Sep 11, 2020
    11
    403 的报错内容是啥…只有一个 403 头?
    mamasan
    mamasan
    Sep 11, 2020
    12
    加个.addHeader("User-Agent", "PostmanRuntime/7.26.5")
    dadaoqueyi
    dadaoqueyi
    OP
    Sep 11, 2020
    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}
    dadaoqueyi
    dadaoqueyi
    OP
    Sep 11, 2020
    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 也没加头
    dadaoqueyi
    dadaoqueyi
    OP
    Sep 11, 2020
    15
    @monkeyWie 下班下班,获取我再试下
    mamasan
    mamasan
    Sep 11, 2020
    16
    @dadaoqueyi
    response.body().string()
    dadaoqueyi
    dadaoqueyi
    OP
    Sep 11, 2020 via Android
    17
    @mamasan 回家我在试下
    dadaoqueyi
    dadaoqueyi
    OP
    Sep 11, 2020
    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())成功拿到结果
    zcw159357
    zcw159357
    Sep 11, 2020
    19
    @dadaoqueyi 第二张图……打码!漏了
    dadaoqueyi
    dadaoqueyi
    OP
    Sep 11, 2020 via Android
    20
    @zcw159357 你在仔细看看,没漏吧
    zcw159357
    zcw159357
    Sep 11, 2020
    21
    @dadaoqueyi traceback 里……
    dadaoqueyi
    dadaoqueyi
    OP
    Sep 11, 2020
    22
    @zcw159357 汗汗汗,密码,token 我改掉了,此贴删除
    zcw159357
    zcw159357
    Sep 11, 2020
    23
    @dadaoqueyi 咦 删帖只是从列表里去掉吗……感觉还能访问到呢
    dadaoqueyi
    dadaoqueyi
    OP
    Sep 11, 2020 via Android
    24
    @zcw159357 删不了,我改密码了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2403 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 04:47 · PVG 12:47 · LAX 20:47 · JFK 23:47
    ♥ Do have faith in what you're doing.