V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kkshell
V2EX  ›  问与答

PHP 的一个 curl 问题

  •  
  •   kkshell · 2019-11-25 20:26:42 +08:00 · 1337 次点击
    这是一个创建于 1817 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我请求一个接口,需要传到一个 grant_type 的参数,但是传过去返回说没有传,上网找了好多都不能解决

    如题,传不了图片,跳转看下呗

    https://bbs.csdn.net/topics/395163938?page=1#post-409874111

    第 1 条附言  ·  2019-11-25 22:49:28 +08:00
    问题已解决原来要传 query,对方的文档也没说明,中午 3 点问了到现在也没回复,哈哈。已解决,谢谢大家!
    16 条回复    2019-11-25 22:35:53 +08:00
    kkshell
        1
    kkshell  
    OP
       2019-11-25 20:47:05 +08:00
    求助啊
    kkshell
        2
    kkshell  
    OP
       2019-11-25 20:48:00 +08:00
    给各位大佬磕头了,想破脑子不知道咋回事
    eason1874
        3
    eason1874  
       2019-11-25 20:54:24 +08:00 via Android
    我怎么记得 postfields 是 value=key 格式而不是 json 格式,你把 json encode 去掉或者改成 http build query 试试。

    或者谷歌搜索 curl post 按人家的例子试试。我现在手机上不方便给你代码
    eason1874
        4
    eason1874  
       2019-11-25 20:55:21 +08:00 via Android
    #3 打反了,我是想打 key=value
    dobelee
        5
    dobelee  
       2019-11-25 20:59:03 +08:00 via iPhone
    这代码质量无力吐槽了。
    请求的哪里?看下服务端收到的请求报文。
    kkshell
        6
    kkshell  
    OP
       2019-11-25 21:32:17 +08:00
    @dobelee 就是看不到,请求别人的
    kkshell
        7
    kkshell  
    OP
       2019-11-25 21:38:34 +08:00
    @eason1874 这两种方法我都试过,不行
    eason1874
        8
    eason1874  
       2019-11-25 21:44:50 +08:00 via Android
    @kkshell #7 我刚确认了,postfields 确实是跟 url query 一样的格式,是 key=value&key2=value2 这种字符串。

    你先确认 grant_type 是通过 post 传递而不是 url query 本身,然后再确认对方要求的格式是不是普通 post 字段,实在不行就把对方文档贴出来看看。
    eason1874
        9
    eason1874  
       2019-11-25 21:48:28 +08:00 via Android
    你想确认自己发送的请求数据对不对,那你可以打印 curl 的请求信息出来,我记得是支持获取请求原文的,搜 php curl request info 应该可以搜到。
    kkshell
        10
    kkshell  
    OP
       2019-11-25 21:52:06 +08:00
    @eason1874 我试试
    kkshell
        11
    kkshell  
    OP
       2019-11-25 21:59:40 +08:00
    @eason1874 返回只有这些响应信息,就是不知道是不是请求的时候会转义了还是怎么样,然后直接拼接成 key=value&key2=value2 这种格式我也试过,没用,对方的文档就是链接中的第一个回复
    ["content_type"] => string(30) "application/json;charset=UTF-8"
    ["http_code"] => int(400)
    ["header_size"] => int(347)
    ["request_size"] => int(236)
    ["filetime"] => int(-1)
    ["ssl_verify_result"] => int(0)
    ["redirect_count"] => int(0)
    ["total_time"] => float(0.265055)
    ["namelookup_time"] => float(0.001744)
    ["connect_time"] => float(0.027225)
    ["pretransfer_time"] => float(0.027287)
    ["size_upload"] => float(362)
    ["size_download"] => float(68)
    ["speed_download"] => float(256)
    ["speed_upload"] => float(1365)
    ["download_content_length"] => float(-1)
    ["upload_content_length"] => float(362)
    ["starttransfer_time"] => float(0.052809)
    ["redirect_time"] => float(0)
    ["redirect_url"] => string(0) ""
    imdong
        12
    imdong  
       2019-11-25 22:07:21 +08:00
    我怀疑你发起的请求是 json 字符串才行。

    posturlzhangxiang($url, json_encode($req_param), 'Basic d2NjojEyMw==')
    eason1874
        13
    eason1874  
       2019-11-25 22:14:38 +08:00
    @kkshell #11 以你目前的水平,我怀疑一时半刻没办法说得你明白。Postman 填参数右边有个 code 可以显示请求原文,你复制一个可以成功请求的原文把关键信息脱敏改成其他字符,然后发到你原文评论或者这里,我写个例子给你。
    dusu
        14
    dusu  
       2019-11-25 22:15:22 +08:00 via iPhone
    json 别编码试试:json_encode($data,320)
    kkshell
        15
    kkshell  
    OP
       2019-11-25 22:33:11 +08:00
    @imdong
    @dusu 试过了哈

    @eason1874
    kkshell
        16
    kkshell  
    OP
       2019-11-25 22:35:53 +08:00
    @kkshell 我发现拉到 postman 就不能成功- -,之前请求的貌似都是缓存。。还给我报这个错
    {
    "timestamp": 1574692150513,
    "status": 500,
    "error": "Internal Server Error",
    "message": "Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.4559878006032139456.9005/work/Tomcat/localhost/ROOT] is not valid",
    "path": "/wcc/v1/oauth/token"
    }
    估计是对方的代码错了,刚发现 postman 有个 code 的可以直接显示代码,这样我自己可以搞定。我到时候再问下提供的人吧,那个人写的文档都不对的,我只能登他的后台 F12 来看路径和具体传什么参数,谢谢各位啦
    @eason1874
    @imdong
    @dusu
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1068 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:00 · PVG 07:00 · LAX 15:00 · JFK 18:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.