我请求一个接口,需要传到一个 grant_type 的参数,但是传过去返回说没有传,上网找了好多都不能解决
如题,传不了图片,跳转看下呗
1
kkshell OP 求助啊
|
2
kkshell OP 给各位大佬磕头了,想破脑子不知道咋回事
|
3
eason1874 2019-11-25 20:54:24 +08:00 via Android
我怎么记得 postfields 是 value=key 格式而不是 json 格式,你把 json encode 去掉或者改成 http build query 试试。
或者谷歌搜索 curl post 按人家的例子试试。我现在手机上不方便给你代码 |
4
eason1874 2019-11-25 20:55:21 +08:00 via Android
#3 打反了,我是想打 key=value
|
5
dobelee 2019-11-25 20:59:03 +08:00 via iPhone
这代码质量无力吐槽了。
请求的哪里?看下服务端收到的请求报文。 |
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 字段,实在不行就把对方文档贴出来看看。 |
9
eason1874 2019-11-25 21:48:28 +08:00 via Android
你想确认自己发送的请求数据对不对,那你可以打印 curl 的请求信息出来,我记得是支持获取请求原文的,搜 php curl request info 应该可以搜到。
|
11
kkshell OP @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) "" |
12
imdong 2019-11-25 22:07:21 +08:00
我怀疑你发起的请求是 json 字符串才行。
posturlzhangxiang($url, json_encode($req_param), 'Basic d2NjojEyMw==') |
13
eason1874 2019-11-25 22:14:38 +08:00
@kkshell #11 以你目前的水平,我怀疑一时半刻没办法说得你明白。Postman 填参数右边有个 code 可以显示请求原文,你复制一个可以成功请求的原文把关键信息脱敏改成其他字符,然后发到你原文评论或者这里,我写个例子给你。
|
14
dusu 2019-11-25 22:15:22 +08:00 via iPhone
json 别编码试试:json_encode($data,320)
|
16
kkshell OP @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 |