0

明らかに、検索で適切なキーワードを使用していないか、ブログやフォーラムなどで他の人が書いた内容を理解していません。

2 つのサーバー間でのデータの受け渡しに関する情報を探しています。データは、JSON 配列内に含まれていることが望ましいです。これを完全に網羅したブログを書いている人を知っているなら、私は本当にそれを読む機会が欲しい. そうでなければ、あなたはいくつかの考えを提供できますか?

詳細: ユーザーがページにアクセスすると、PHP 関数が呼び出され、一部のデータが JSON 配列に「パッケージ化」されてから、他のサーバーへの POST コマンドが送信されます。POST を受信した後の 2 番目のサーバーは、何らかの処理を行ってから、一部のデータを「パッケージ化」して 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 が使用されます。

どちらのサーバーも、PHP フレームワークとして Laravel 4 を使用します。

ご意見やご感想をお寄せいただきありがとうございます。

4

1 に答える 1

0

これを追加:

curl_setopt($ch, CURLOPT_HEADER, 0);

content-length に引用符を付けます。

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