php curl rest api响应不是json格式

我正在进行帖子卷曲请求</ p>

  $ ch = curl_init  (); 
curl_setopt($ ch,CURLOPT_URL,$ url);
curl_setopt($ ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ ch,CURLOPT_POSTFIELDS,json_encode($ postData));
curl_setopt($ ch ,CURLOPT_POST,1);
$ headers = array();
$ headers = [“Content-Type:application / json”,“Accept:application / json”];
curl_setopt($ ch,CURLOPT_HTTPHEADER,$ header);

$ result = curl_exec($ ch);
if(curl_errno($ ch)){
echo'Error:'。 curl_error($ ch);
}
curl_close($ ch);
返回$ result;
</ code> </ pre>

上面的curl请求应该返回一个json格式化的字符串 但是以javascript对象形式获取字符串。</ p>

  string(68)“{data:{errorCode:AC01,errorMessage:SansID 53563857存在。}}”
</ 代码> </ pre>

当我尝试从post man api做同样的事情时,返回完美的json。</ p>

  {“data”  :{“errorCode”:“AC01”,“errorMessage”:“SansID 53563857存在。”}} 
</ code> </ pre>

请让我知道我在哪里做错了 。</ p>
</ div>

展开原文

原文

I doing a post curl request

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));
        curl_setopt($ch, CURLOPT_POST, 1);
        $headers = array();
        $headers = ["Content-Type:application/json","Accept:application/json"];
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

        $result = curl_exec($ch);
        if (curl_errno($ch)) {
            echo 'Error:' . curl_error($ch);
        }
        curl_close ($ch);
        return $result;

The above curl request should return a json formated string but getting a string in javascript object form.

string(68) "{data:{errorCode:AC01,errorMessage:SansID 53563857 is exist.}}"

Where as when i try to do the same thing from post man api is returning perfect json.

{"data":{"errorCode":"AC01","errorMessage":"SansID 53563857 is exist."}}

Please let me know where i'm doing wrong.

dousha7904
dousha7904 请发给我API名称和apiurl?
大约 2 年之前 回复
douye2488
douye2488 是的,我做了那个得到了NULL
大约 2 年之前 回复
drmgg4411
drmgg4411 好的,请在$result=curl_exec($ch)之后使用json_decode;线。请使用以下代码:$responseArray=json_decode($result);的print_r($responseArray);死;请检查我的建议,如果仍然出现同样的错误,请告诉我。
大约 2 年之前 回复
duandang9434
duandang9434 我使用dd(),当json_decode()它给出的字符串为NULL
大约 2 年之前 回复
dongwuxie5112
dongwuxie5112 我认为API响应没问题,请使用json_decode()方法将json转换为数组并使用print_r方法打印该值。
大约 2 年之前 回复
dongzhukuai8177
dongzhukuai8177 你使用var_dump()打印响应数据吗?
大约 2 年之前 回复
dongliechuich10319
dongliechuich10319 无论你得到什么样的反应都不是curl*函数的错。如果不了解更多信息,NoOne将无法就该API提供建议。
大约 2 年之前 回复

1个回答



使用json_decode将String转换为Object(stdClass)或数组:
我在使用WordPress(cURL)和Laravel时遇到了同样的问题 (护照)驱动的API,它以字符串格式返回JSON。 我保存了响应</ p>

  //将json字符串保存到变量json对象中并返回结果
$ response = curl_exec($ curl);
// convert t
return( json_decode($ response));
</ code> </ pre>

请参阅此链接这里用于类似的解决方案</ p>

查看此截图修复前后的控制台日志 </ p>
</ div>

展开原文

原文

Use json_decode to convert String into Object (stdClass) or array: I was having the same issue working with WordPress(cURL) and Laravel(passport) powered API that was returning JSON but in string format. I saved the response

//save json string into variable json object and return result
$response = curl_exec($curl);
//convert t
return (json_decode($response));

refer to this link here for a similar solution

Check out this screenshot console logs for before and after the fix

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐