Php 警告:http\u build\u query():参数1应为数组或对象(但它有效)

Php 警告:http\u build\u query():参数1应为数组或对象(但它有效),php,api,curl,Php,Api,Curl,我收到以下警告: 警告:http\u build\u query():参数1应为数组或对象。 我知道这个错误代表什么,也知道我为什么会得到它,但我不知道如何修复它,因为代码就像一个符咒,所以也许你们可以帮我解决 我使用以下CURLOPT_POSTFIELDS对url进行卷曲: curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query(json_encode($data))) json_encode($data)的vardump= string(57)

我收到以下警告:
警告:http\u build\u query():参数1应为数组或对象。

我知道这个错误代表什么,也知道我为什么会得到它,但我不知道如何修复它,因为代码就像一个符咒,所以也许你们可以帮我解决

我使用以下CURLOPT_POSTFIELDS对url进行卷曲:
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query(json_encode($data)))

json_encode($data)的vardump=

string(57){“transporterCode”:“TNT”,“trackAndTrace”:“3SAOLD1234567”}“

因此出现了错误(它是一个字符串),但是我不允许更改任何内容,因为这样API调用将失败。除了消除错误之外,我还能做什么来修复它吗

/爱


Grumpymuppet

适用于任何有相同问题的人。对我来说,这是所需的post方法(PUT)和http_build_query()的组合造成的

我最终使用了:

这就解决了问题


祝所有有同样问题的人好运。对我来说,这是必需的post方法(PUT)和http_build_query()的组合,正是他们把问题搞砸了

我最终使用了:

这就解决了问题


祝您好运
http\u build\u query([json\u encode($data])
?您应该通过第一个参数数组,然后尝试这个curl\u setopt($ch,CURLOPT\u POSTFIELDS,http\u build\u query($data));您可能希望使用yes Forge Web Design,但是如果没有json_编码,它将不接受。这是一条消息:
提供的正文不符合要求的规范。请检查消息结构是否存在错误。
在Berto99中两次打开(和一次关闭)
http_build_查询如何工作([json_encode($data])
?您应该传递第一个参数数组,然后尝试这个curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($data));您可能希望使用yes Forge Web Design,但是如果没有json_编码,它将不接受。这是一条消息:
提供的正文不符合要求的规范。请检查消息结构是否存在错误。
如果两次打开(一次关闭),如何使用Berto99?
       curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
       curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));