V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
dadaoqueyi
V2EX  ›  程序员

Java OKhttp4.0 与 Python Requests、Postman 区别

  •  
  •   dadaoqueyi ·
    mytianya · 2020-09-11 16:48:06 +08:00 · 3235 次点击
    这是一个创建于 1560 天前的主题,其中的信息可能已经有所发展或是发生改变。

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