为什么我的 GraphQL 查询使用 curlopt_postfields 返回 json 错误?
Why is my GraphQL Query using curlopt_postfields returning a json error?
我正在尝试让我的一些代码工作。但我不断收到以下错误。对这里出了什么问题有什么想法吗?我想我已经正确转义了所有引号
{"errors":[{"message":"json body could not be decoded: invalid
character 'L' after object key:value pair"}],"data":null}
我知道我的查询是正确的,因为我可以在 graphQL 操场上 运行 它并获取数据。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://xxxxxxxxxxxx.com/api/v4/endpoint');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"query\":\"{ search(q: \"LM123\") { results { part { mpn manufacturer { name }}}}\"}");
curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
$headers = array();
$headers[] = 'Accept-Encoding: gzip, deflate';
$headers[] = 'Content-Type: application/json';
$headers[] = 'Accept: application/json';
$headers[] = 'Connection: keep-alive';
$headers[] = 'Dnt: 1';
$headers[] = 'Origin: https://xxxxxxxxxxxxx.com';
$headers[] = 'Token: xxxxxxxxxxxxxxxxxxxxxxxx';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
echo $result;
如果我 运行 一个不搜索字词的简单查询,它就可以完美运行。喜欢:
curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"query\":\"{ categories { name }}\"}");
您在此处使用双引号时遇到问题 \"LM123\"
。当你的 JSON 正在解析时,解析器期望这个 \"
结束你的值然后你将在你的 JSON 中有 , \"other_key\": \"...\"
,但你有 LM123...
相反。
您可以尝试这样的操作:
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"query":"{ search(q: \"LM123\") { results { part { mpn manufacturer { name }}}}"}');
我正在尝试让我的一些代码工作。但我不断收到以下错误。对这里出了什么问题有什么想法吗?我想我已经正确转义了所有引号
{"errors":[{"message":"json body could not be decoded: invalid character 'L' after object key:value pair"}],"data":null}
我知道我的查询是正确的,因为我可以在 graphQL 操场上 运行 它并获取数据。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://xxxxxxxxxxxx.com/api/v4/endpoint');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"query\":\"{ search(q: \"LM123\") { results { part { mpn manufacturer { name }}}}\"}");
curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
$headers = array();
$headers[] = 'Accept-Encoding: gzip, deflate';
$headers[] = 'Content-Type: application/json';
$headers[] = 'Accept: application/json';
$headers[] = 'Connection: keep-alive';
$headers[] = 'Dnt: 1';
$headers[] = 'Origin: https://xxxxxxxxxxxxx.com';
$headers[] = 'Token: xxxxxxxxxxxxxxxxxxxxxxxx';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
echo $result;
如果我 运行 一个不搜索字词的简单查询,它就可以完美运行。喜欢:
curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"query\":\"{ categories { name }}\"}");
您在此处使用双引号时遇到问题 \"LM123\"
。当你的 JSON 正在解析时,解析器期望这个 \"
结束你的值然后你将在你的 JSON 中有 , \"other_key\": \"...\"
,但你有 LM123...
相反。
您可以尝试这样的操作:
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"query":"{ search(q: \"LM123\") { results { part { mpn manufacturer { name }}}}"}');