1

XML と PHP を使用して EAN ホテル検索 API を実装しました。そして、ホテルを検索してリストするときに次の問題があります。

詳細を検索

City - Soho
Country - GB
Arrival - Aug 1, 2013
Departure - Aug 2, 2013
Rooms - 1 room with 2 adults

TravelNow サイトでの結果

http://www.travelnow.com/templates/331656/hotels/list?lang=en&currency=GBP&secureUrlFromDataBridge=https%3A%2F%2Fwww.travelnow.com&requestVersion=V2&destination=&standardCheckin=8%2F1%2F2013&standardCheckout=8%2F2%2F2013&checkin=8%2F1%2F13& amp;checkout=8%2F2%2F13&rating=0&targetId=AREA-d5cfc783-9e42-4440-9200-0bd17397c37f%7Clandmarks&roomsCount=1&rooms[0].adultsCount=2&rooms[0].childrenCount=0&filter.sortedBy=our_rec&filter.hotelName=&filter.lowPrice=0&filter.travelerOpinion=0&filter.breakfastIncluded=false&subscriptionInfo.termsConditionAgreement=false&subscriptionInfo.wantNews=false&subscriptionInfo.wantNewsletters=false&tab=list

TravelNow のサイトでは、上記の URL に示されているように、イギリス、ロンドン、ソーホーを検索しました。

リクエストを送信しました

http://api.ean.com/ean-services/rs/hotel/v3/list?currencyCode=GBP&minorRev=99&apiKey=XXXXXXXXXXXXXXXXXXXXXXXX&locale=en_US&cid=XXXXXXXX&sort=OVERALL_VALUE&xml=<HotelListRequest><city>Soho<%2Fcity><countryCode>GB<%2FcountryCode><arrivalDate>08%2F01%2F2013<%2FarrivalDat e><departureDate>08%2F02%2F2013<%2FdepartureDate><numberOfResults>25<%2FnumberOfResults><supplierType>E%7CV<%2FsupplierType><supplierCacheTolerance>MED_ENHANCED<%2FsupplierCacheTolerance><RoomGroup><Room><numberOfAdults>2<%2FnumberOfAdults><%2FRoom><%2FRoomGroup><%2FHotelListRequest>

応答を受け取りました

<ns2:HotelListResponse xmlns:ns2="http://v3.hotel.wsapi.ean.com/">
<EanWsError>
<itineraryId>-1</itineraryId>
<handling>UNKNOWN</handling>
<category>EXCEPTION</category>
<exceptionConditionId>-1</exceptionConditionId>
<presentationMessage>No Results Available</presentationMessage>
<verboseMessage>Result was null</verboseMessage>
<ServerInfo serverTime="05:45:17.821-0500" timestamp="1375181117" instance="54"/>
</EanWsError>
<customerSessionId>0ABAAA36-B023-AF91-4022-F2DA5EE95A74</customerSessionId>
</ns2:HotelListResponse>

また、city/destinationString に指定された都市文字列「Soho, London, United Kingdom」で検索しましたが、ホテルのリストはありませんでした。API テスターhttp://devhub.ean.com/apitester/index.htmlも使用しましたが、同じ結果が得られました。

この検索で​​は、ほとんどの場合、ロンドンの多くの都市で結果が表示されません。http://developer.ean.com/docs/read/hotel_list/examples/XML_Alternativesに示されている「destinationString」ベースの検索を試みましたが、どちらも機能しませんでした。目的地/都市をどのように渡す必要がありますか? ホテルが表示されている場合でも、指定された都市内/周辺にありません。

上記のリクエストを適切に実装して、特定の都市のホテルを一覧表示する方法を教えてください。これは、検索にリストしたいくつかの都市でのみ機能します。以下に示すのは、ブロック内でリクエストを渡すために使用するロンドンの正確な都市名のリストです。以下の都市名が正しくない場合、どのように修正する必要がありますか?

ベイズウォーター - パディントン、ベルグラビア、ブルームズベリー - ソーホー、カナリー ワーフ - ドックランズ、カムデン タウン、チェルシー、チェルシー - ナイツブリッジ、ウェストミンスター市、チャイナタウン、イースト エンド、フラム、グリニッジ、ホルボーン、ハマースミス、ハムステッド、ハムステッド - カムデン タウン、ハウンズロー、イズリントン、ナイツブリッジ、ケンジントン、ランベス、ロンドン、ロンドン エリア、メイフェア、メイフェア - メリルボーン、メリルボーン、ピムリコ、セント パンクラス - イズリントン、ソーホー、サザーク - ウォータールー

上記の都市で機能する REST/XML リクエスト文字列を手伝ってください。

現在の回答はどれも受け入れていませんが、ベルを鳴らすより正しい回答を探しています。

4

4 に答える 4

1

ean によって API テスターで指定された geoSearch タブを使用する必要があります。

http://devhub.ean.com/apitester/index.html

その後、宛先文字列を挿入し、応答に従って都市名を取得する必要があります。これを行う方法のサンプルコードは次のとおりです。

$destination="soho";//YOUR Destination string

$Geosearch='https://api.eancdn.com/ean-services/rs/hotel/v3/geoSearch?cid=50555&minorRev=99&apiKey=**XXXXX(your_api_key)**&locale=en_US&currencyCode=USD&xml=%3CLocationInfoRequest%3E%0A%20%20%20%20%3Clocale%3Een_US%3C%2Flocale%3E%0A%20%20%20%20%3CdestinationString%3E';
$Geosearch.=$destination;
$Geosearch.='%3C%2FdestinationString%3E%0A%3C%2FLocationInfoRequest%3E';

$locate = json_decode(file_get_contents($Geosearch),true);
$citynames=$locate['LocationInfoResponse']['LocationInfos']['LocationInfo'];
$citysearched=$citynames['city'];

ここで、ホテル リストの URL を使用し、目的地の文字列の代わりに$citysearched値を連結する必要があります。

于 2013-11-08T07:09:19.167 に答える
1

ホテルリストを取得するためにRESTメソッドを使用しています

私のコードは以下のとおりです

$url = 'http://api.ean.com/ean-services/rs/hotel/v3/list?minorRev=14
&cid=55505
&apiKey=p9ycn9cxb2zp3k3gfvbf5aym
&customerUserAgent=&customerIpAddress=
&locale=en_US
&currencyCode=USD
&city=Lasvegas
&stateProvinceCode=NV
&countryCode=US
&supplierCacheTolerance=MED
&arrivalDate=08/25/2013
&departureDate=08/27/2013
&room1=2
&numberOfResults=25
&supplierCacheTolerance=MED_ENHANCED';

  $header[] = "Accept: application/json";
  $header[] = "Accept-Encoding: gzip";
  $ch = curl_init();
  curl_setopt( $ch, CURLOPT_HTTPHEADER, $header );
  curl_setopt($ch,CURLOPT_ENCODING , "gzip");
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
  curl_setopt( $ch, CURLOPT_URL, $url );
  curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
  $response = json_decode(curl_exec($ch));
  $rt =  curl_getinfo($ch);
  echo "<pre>";
  print_r($response);
  echo "</pre>";

詳細が必要です。このリンクを参照してください

于 2013-08-12T05:43:02.080 に答える
0

file_get_contents を使用できます

以下はコードです

$request = "http://dev.api.ean.com/ean-services/rs/hotel/v3/list";
$minorRev = "20";
$cid = "55505";
$api = "p9ycn9cxb2zp3k3gfvbf5aym";

//room available
$response = file_get_contents($request . '?minorRev=' . $minorRev . '&cid=' . $cid . '&apiKey=' . $api . '&locale=en_US&currencyCode=MYR&hotelId='. $hotel_id . '&arrivalDate=' . $arrivalDate . '&departureDate=' . $departureDate .  $room . '&includeDetails=true&includeRoomImages=true&options=HOTEL_DETAILS,ROOM_TYPES,ROOM_AMENITIES,HOTEL_IMAGES');
$result = json_decode($response, false);

ちなみに、API リンクはhttp://dev.api.ean.com/である必要があります。

于 2014-06-24T09:32:31.043 に答える