簡體   English   中英

Web API-包含標題和正文的HTTP發布請求

[英]Web API - HTTP Post Request That Includes Header & Body

我剛剛可以訪問Internet上一個網站的API,並且作為一個新的api開發人員,我在理解我應該如何開始以及從什么開始方面遇到了麻煩,因此希望你們能引導我。 他們還沒有文檔或教程。

如果有人可以給我一個關於如何發送包含Header和body的Http post請求的小例子? 正如他們在API頁面中提到的:

所有請求都必須包含帶有siteid和apikey(之間帶有冒號)的Authorization標頭,並且必須與請求正文中的siteid和apikey匹配

在主體中,參數內容類型將為application / json。 他們還提供了基本URL。

響應將為application / json。

我該怎么辦? 可以使用AJAX發送請求嗎? 或為此有PHP代碼? 我已經讀了很多關於這個主題的書,但是沒有一個進入我的腦海。 真的希望你們能幫助我。

如果您需要更多信息,請告訴我,以便我為您提供。

編輯:問題已解決,只是將我所做的小型編輯發布到我標記的正確答案中提供的代碼中。

感謝Anonymous先生給我的大力幫助。 他的回答是如此接近,我所要做的就是只是稍微編輯一下他的代碼,一切就一切順利了。

我將在下面列出最終代碼,以防其他開發人員遇到此問題或想要執行HTTP請求。

首先,我所做的是將要通過HTTP發送的數據存儲在JSON類型的文件中:

{
  "criteria": {
    "landmarkId": 181,
    "checkInDate": "2018-02-25",
    "checkOutDate": "2018-02-30"
  }
}

第二件事是,什么人可以看到匿名先生張貼的內容。

<?php 
header('Access-Control-Allow-Origin: *');

$SiteID= 'My Site Id';
$ApiId= 'My Api Id';
$url = 'Base URL';

// Here i will get the data that i created in Json data type
$data = file_get_contents("data.json");

// I guess this step in not required cause the data are already in JSON but i had to do it for myself  
$arrayData = json_decode($data, true);

$ch = curl_init();
//curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$SiteID:$ApiID");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                                            'Content-Type: application/json',
                                            'Connection: Keep-Alive',
                                            'Authorization: $SiteID:$ApiId'
                                            ));
curl_setopt($ch, CURLOPT_POSTFIELDS,json_encode($arrayData)); 
$result = curl_exec($ch);
curl_close($ch);  
print_r($result); 

?>

嘗試這個

    $site_id = 'your_site_id';
    $api_key = 'your_api_key';

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://api-connect-url');
    curl_setopt($ch, CURLOPT_POST, 1);

    ############  Only one of the statement as per condition ########### 

   //if they have asked for post
    curl_setopt($ch, CURLOPT_POSTFIELDS, "$site_id=$api_key" );

    //or if they have asked for raw post
    curl_setopt($ch, CURLOPT_POSTFIELDS, "$site_id:$api_key" );

    ####################################################################

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ["$site_id:$api_key"] );

    $api_response = curl_exec ($ch);

    curl_close ($ch);

由於要求將JSON有效負載發送到API

    $site_id = 'your_site_id';
    $api_key = 'your_api_key';

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://api-connect-url');
    curl_setopt($ch, CURLOPT_POST, 1);

    //send json payload
    curl_setopt($ch, CURLOPT_POSTFIELDS, "{
        "criteria":{
            "cityId":9395,
            "area":{
                "id":0,
                "cityId":0
            },
            "landmarkId":0,
            "checkInDate":"2017-09-02",
            "checkOutDate":"2017-09-03",
            "additional":{
                "language":"en-us",
                "sortBy":"PriceAsc",
                "maxResult":10,
                "discountOnly":false,
                "minimumStarRating":0,
                "minimumReviewScore":0,
                "dailyRate":{
                    "minimum":1,
                    "maximum":10000
                },
                "occupancy":{
                    "numberOfAdult":2,
                    "numberOfChildren":1
                },
                "currency":"USD"
                }
            }
        }"
    );

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ["$site_id:$api_key", 'Content-Type:application/json'] );

    $api_response = curl_exec ($ch);

    curl_close ($ch);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM