Java OKhttp4.0 与 Python Requests、Postman 区别 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
dadaoqueyi
V2EX    程序员

Java OKhttp4.0 与 Python Requests、Postman 区别

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

    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 的问题,参考这个帖子: 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     Solana     6027 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 02:15 PVG 10:15 LAX 19:15 JFK 22:15
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86