-1

http経由でphpスクリプトを呼び出し、さらに処理する予定の場所からjsonオブジェクトを受信しようとしています。

基本的に、コードは次のとおりです。

<?php
    if ($_SERVER['REQUEST_METHOD'] === 'GET') {
        $version=$_GET["v"];
        $product=$_GET["p"];
        $stream=$_GET["s"];
        $cmd=$_GET["c"];

        $string = file_get_contents("http://localhost:82/releasenote/src/getTSBDetails.php?p=$product&v=$version&s=$stream&c=$cmd");
        print_r($string);
        exit();
    } else {
        print("2");
        $string = file_get_contents('tsbDetails.json');
    }

get_file_contents http リクエストをブラウザで直接呼び出すと、出力は json ですが、上記を使用しようとすると応答がありません。

4

2 に答える 2

2

ここに画像の説明を入力

<?php
        // JSon request format is :
        // {"userName":"654321@zzzz.com","password":"12345","emailProvider":"zzzz"}

        // read JSon input
        $data_back = json_decode(file_get_contents('php://input'));

        // set json string to php variables
        $userName = $data_back->{"userName"};
        $password = $data_back->{"password"};
        $emailProvider = $data_back->{"emailProvider"};

        // create json response
        $responses = array();
        for ($i = 0; $i < 10; $i++) {
            $responses[] = array("name" => $i, "email" => $userName . " " . $password . " " . $emailProvider);
        }

        // JSon response format is :
        // [{"name":"eeee","email":"eee@zzzzz.com"},
        // {"name":"aaaa","email":"aaaaa@zzzzz.com"},{"name":"cccc","email":"bbb@zzzzz.com"}]

        // set header as json![enter image description here][2]
        header("Content-type: application/json");

        // send response
        echo json_encode($responses);
        ?>


  [1]: http://i.stack.imgur.com/I7imt.jpg
  [2]: http://i.stack.imgur.com/XgvOT.jpg
于 2012-10-04T13:43:59.987 に答える
0

まず、変数が URL で使用できることを確認する必要があります。

    $version=urlencode($_GET["v"]);
    $product=urlencode($_GET["p"]);
    $stream=urlencode($_GET["s"]);
    $cmd=urlencode($_GET["c"]);

次に、読み込んだ値$stringが有効な json かどうかを確認する必要があります。そのためにこの回答を使用できます。

次に、文字列に有効な json が含まれている場合は、それをそのまま使用する必要がありますecho

最後に、スクリプトから常に json を期待する場合は、エラー処理も json_encode する必要があります。

} else {
    echo json_encode("2");
    // $string = file_get_contents('tsbDetails.json');  /* commented out as you don't seem to use it */
}
于 2012-10-04T14:01:18.893 に答える