2017-06-20 18 views
0

私は、アクセス可能なサーバー側からデータのユーザー側を取得できるようにプロキシを設定しています。私はいくつかのエンドポイントの設定を持っています、そして、彼らはすべてうまくいくが、今私は予約をするためにAPIにデータを送り返す必要があるところにいる。Ajaxリクエストからデータを取得し、別のAPIに渡します。

  1. が代理でAJAXリクエストからデータを取得するために私が

私はわからない方法を、AJAXリクエストにAPIから

  • 復帰成功/エラーメッセージをAPIにプロキシにデータを送信する必要がありますこの。ここに私のAjaxリクエストです:

    var settings2 = { 
          "async": true, 
          "crossDomain": true, 
          "url": "http://url?method=hello&format=json&entity=" + id, 
          "dataType": "json", 
          "data": data, 
          "method": "POST" 
         }; 
    
         var a2 = $.ajax(settings2); 
    
         $.when(a2).done(function(d2) { 
    
          rp = d2; 
    
          console.log(JSON.stringify(rp)); 
    
         }); 
    

    と私は、APIからデータを取得する必要がある他のエンドポイントで使用するPHP関数やメソッドは、このために働く:これで

    function LocationReserve(data) { 
    
        header('Content-Type: application/json'); 
    
        $url = 'api_url' . $_GET['entity'] ; 
        $auth = 'Authorization: key'; 
    
        $ch = curl_init($url); 
        $options = array(
         CURLOPT_HTTPHEADER => array(
          $auth 
         ), 
         CURLOPT_SSL_VERIFYPEER => false, 
         CURLOPT_RETURNTRANSFER => true, 
         CURLOPT_FOLLOWLOCATION, 1 
        ); 
        curl_setopt_array($ch, $options); 
    
        $result = curl_exec($ch); 
        curl_close($ch); 
    
        return $result; 
    } 
    
    // Method A: Say Hello to the API 
    if(strcasecmp($_GET['method'],'hello') == 0){ 
        $response['code'] = 1; 
        $response['status'] = $api_response_code[ $response['code'] ]['HTTP Response']; 
        $response['data'] = wssLocationReserve(); 
    } 
    
    // --- Step 4: Deliver Response 
    
    // Return Response to browser 
    deliver_response($_GET['format'], $response); 
    

    としてそれは私が戻って

    {"code":1,"status":200,"data":"{\"Message\":\"The requested resource does not support http method 'GET'.\"}"} 
    

    応答を取得している私は私のオプションにCURLOPT_POST =>真追加され、今で応答が

    です

    私のajax呼び出しのデータを受け取り、api_urlに送信して応答を返すにはどうすればよいですか? APIによって

    ** EDIT例予想データ:

    { 
         "ReservationDay": "05/15/2015", 
         "Units": [{ 
          "UnitID": 12345, 
          "InsuranceID": 123 (or null) 
         }], 
         "PaymentInfo": { 
          "FirstName": "User", 
          "LastName": "Userson", 
          "Address1": "2727 N Central Ave", 
          "Address2": "", 
          "City": "Phoenix", 
          "State": "AZ", 
          "Zip": "85022", 
          "Phone": "602-2877878", 
          "Email": "[email protected]", 
          "CreditCard": "6011000000000000", 
          "ExpirationMMYY": "1215", 
          "CSC": "100" 
         } 
        } 
    
  • +0

    あなたは** ** GET **ではなく** POST **を探しているようですね。 cURLを使うには、 'curl_setopt($ ch、CURLOPT_POST、1);'が必要です。 –

    +0

    私はオプションにCURLOPT_POST => trueを加え、現在の応答が{ "コード":1、 "ステータス":200、 "データ":」 411無効な要求無効な要求:?? R \ \ n "} – JSum

    答えて

    0

    "ステータスコード411(長さ必須)は、それがコンテンツ長せずにメッセージを受け入れることを拒否応答として、サーバによって送信されHTTP何らかの理由でヘッダを使用してください。 "

    1.欠落している可能性のある引数を送信するリクエストをテストします。

    2.データは2番目のエンドポイントに送信する必要がありますか?予想されるデータの仕様を確認し、2回目の要求を修正してください。

    +0

    私はデータがどのようにドキュメントから来るべきかを示す例がありますが、私はそれを私の質問に置きますが、値が文字列かintなどの場合を含めてデータはまったく同じになります。 – JSum

    関連する問題