2

通常、APIサーバーが行うように、クライアントリクエストをリッスンするchriskacerguis Restサーバーがあります。クライアントのリクエストに基づいて、ヘッダーのみでクライアントにデータを送信/応答したいと考えています。

私の質問は次のとおりです。

  1. 最初にクライアント ヘッダーにアクセスするにはどうすればよいですか?

    それから

  2. Rest サーバーでヘッダーを設定するにはどうすればよいですか?

これは、REST SERVER にリクエストを送信する方法です。

function request_curl($url = NULL) {
        $utc = time();
        $post = "id=1&CustomerId=1&amount=2450&operatorName=Jondoe&operator=12";
        $header_data = array(
            "Content-Type: application/json",
            "Accept: application/json",
            "X-API-KEY:3ecbcb4e62a00d2bc58080218a4376f24a8079e1",
            "X-UTC:" . $utc,
        );
        $ch = curl_init();
        $curlOpts = array(
            CURLOPT_URL => 'http://domain.com/customapi/api/clientRequest',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HTTPHEADER => $header_data,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => $post,
            CURLOPT_HEADER => 1,
        );
        curl_setopt_array($ch, $curlOpts);
        $answer = curl_exec($ch);
        // If there was an error, show it
        if (curl_error($ch)) {
            die(curl_error($ch));
        }

        curl_close($ch);
        echo '<pre>';
        print_r($answer);
        echo '</pre>';
    }

以下は、リクエストをリッスンし、ヘッダーに応答する REST SERVER 関数です。

public function clientRequest_post() {
        // Getting Post Data
        $entityBody = file_get_contents('php://input', 'r');
       $this->response($entityBody,200);
      //getting header data ,no idea 
    }
4

1 に答える 1

9

すべてのヘッダー データを取得する php 関数 getallheaders() を試してみてください。配列に変換したい場合は foreach を使います。

これにより、ヘッダーデータが取得され、配列に変換されます

$headers=array();
foreach (getallheaders() as $name => $value) {
    $headers[$name] = $value;
}

body を取得して配列にも変換する場合

$entityBody = file_get_contents('php://input', 'r');
parse_str($entityBody , $post_data);

最終的な関数は次のようになります...

public function clientRequest_post() {

    $headers=array();
    foreach (getallheaders() as $name => $value) {
        $headers[$name] = $value;
    }

    $entityBody = file_get_contents('php://input', 'r');
    parse_str($entityBody , $post_data);


    $this->response($entityBody, 200);


}

ところで、私は$this->response($entityBody,200);あなたのために応答を生成すると思います。頑張ってください

于 2015-06-13T11:37:21.093 に答える