gpt4 book ai didi

php - 使用 PHP cUrl 发送后解码 JSON

转载 作者:搜寻专家 更新时间:2023-10-31 21:17:54 24 4
gpt4 key购买 nike

我到处都研究过了,还是想不通。

我正在编写一个测试 cUrl 请求来测试我的 REST 服务:

// initialize curl handler
$ch = curl_init();

$data = array(
"products" => array ("product1"=>"abc","product2"=>"pass"));
$data = json_encode($data);

$postArgs = 'order=new&data=' . $data;

// set curl options
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLINFO_HEADER_OUT, TRUE);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postArgs);
curl_setopt($ch, CURLOPT_URL, 'http://localhost/store/rest.php');

// execute curl
curl_exec($ch);

这工作正常,我的服务接受了请求,并根据需要填充 $_Post,其中包含两个变量:订单和数据。数据具有编码的 JSON 对象。当我打印出 $_Post['data'] 时,它显示:

{"products":{"product1":"abc","product2":"pass"}}

这正是预期的内容,并且与发送的内容相同。

当我尝试对此进行解码时,json_decode() 没有返回任何内容!

如果我创建一个新字符串并手动输入该字符串,json_decode() 工作正常!

我试过:

strip_tags() 删除可能已添加到 http 帖子中的任何标签utf8_encode() 将字符串编码为所需的 utf 8addslashes() 在引号前添加斜杠

没有任何作用。

知道为什么在从 http post 消息接收到字符串后 json_decode() 不起作用吗?

以下是我处理引用请求的相关部分:

public static function processRequest($requestArrays) {
// get our verb
$request_method = strtolower($requestArrays->server['REQUEST_METHOD']);
$return_obj = new RestRequest();
// we'll store our data here
$data = array();

switch ($request_method) {
case 'post':
$data = $requestArrays->post;
break;
}

// store the method
$return_obj->setMethod($request_method);

// set the raw data, so we can access it if needed (there may be
// other pieces to your requests)
$return_obj->setRequestVars($data);

if (isset($data['data'])) {
// translate the JSON to an Object for use however you want
//$decoded = json_decode(addslashes(utf8_encode($data['data'])));
//print_r(addslashes($data['data']));
//print_r($decoded);
$return_obj->setData(json_decode($data['data']));
}
return $return_obj;
}

最佳答案

事实证明,当 JSON 由 cURL 在 post 参数中发送时 "替换“作为消息编码的一部分。我不确定为什么我尝试的 preg_replace() 函数不起作用,但是使用 html_entity_decode() 删除了 " 并使 JSON 可以解码。

关于php - 使用 PHP cUrl 发送后解码 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4433951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com