0

显然,我在搜索中没有使用正确的关键字,或者不理解其他人在博客或论坛等中写的内容。

寻找有关在两台服务器之间传递数据的信息。数据最好包含在 JSON 数组中。如果您知道有人写了一个完全包含此内容的博客,我真的很想有机会阅读它。否则你能提供一些想法吗?

更详细:当用户访问一个页面时,一个 PHP 函数将被调用,一些数据将被“打包”在一个 JSON 数组中,然后是一个 POST 命令到另一个服务器。第二台服务器收到 POST 后会做一些处理,然后“打包”一些数据,并以 JSON 数组的形式返回。然后将向用户呈现结果。

通过以下内容,我收到了 HTTP 200 响应。只是没有数据。

站点 1:

$data_string = json_encode(array('user_id'=>123));
$ch = curl_init('http://site2.dev/retrieve');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($data_string)
        ));

$result = curl_exec($ch);
$status = curl_getinfo($ch);
curl_close($ch);

$result = json_decode($result); 

站点 2:

public function retrieve() {
    return json_encode(array('some'=>'456'));
}

选择 Json 数组是因为它可以加密,是的 HTTPS 将在最终环境中使用。

两台服务器都将 Laravel 4 作为 PHP 框架。

感谢您的想法和评论。

4

1 回答 1

0

添加这个:

curl_setopt($ch, CURLOPT_HEADER, 0);

并在内容长度上加上引号:

curl_setopt($ch, CURLOPT_HTTPHEADER,
    array('Content-Type: application/json','"Content-Length: ' . strlen($data_string) . '"'));
于 2014-10-29T00:52:44.053 回答