问题描述
当我试图向php中的服务器发送请求时,似乎有一个问题。 http api请求如下所示:
It seems like im getting a problem when Im trying to send a request to a server in php. The http api request is something like this:
http://api.ean.com/ean-services/rs/hotel/v3/ avail?minorRev14& apiKey = p9ycn9cxb2zp3k3gfvbf5aym& cid = 55505& locale = en_US& hotelId = 122212& stateProvinceCode =%20NV%C2%A4cyCode = USD& arrivalDate = 12/27/2012& departureDate = 12/28/2012& room1 = 2 ,& room2 = 2,18,15& room3 = 3,16,16,15& room4 = 3,& includeDetails = true& includeRoomImages = true
我在php中有我的代码的以下部分,我相信错误发生:
I have the following part of my code in php where I believe the error is occuring:
$url = 'http://api.ean.com/ean-services/rs/hotel/v3/avail?minorRev14';
$url .= '&apiKey=p9ycn9cxb2zp3k3gfvbf5aym';
$url .= '&cid=55505';
$url .= '&locale=' . $locale . '&hotelId=' . $hotelid . '&stateProvinceCode=' . $state . '¤cyCode=USD';
$url .= '&arrivalDate=' . $datefr . '&departureDate=' . $dateto . '&' . $details . '&includeDetails=true&includeRoomImages=true';
$header = "Accept: application/json";
$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);
$retValue = curl_exec($ch);
$response = json_decode(curl_exec($ch));
$ee = curl_getinfo($ch);
print_r($ee);
print_r($retValue);
这是我从print_r(curl_getinfo($ ch))语句得到的:
This is what I get from the print_r(curl_getinfo($ch)) statement:
Array (
[url] => http://api.ean.com/ean-services/rs/hotel/v3/avail?minorRev14&apiKey=p9ycn9cxb2zp3k3gfvbf5aym&cid=55505&locale=en_US&hotelId=122212&stateProvinceCode= NV¤cyCode=USD&arrivalDate=12/27/2012&departureDate=12/28/2012&room1=2,&room2=2,18,15&room3=3,16,16,15&room4=3,&includeDetails=true&includeRoomImages=true
[content_type] => text/html
[http_code] => 400
[header_size] => 181
[request_size] => 340
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0.469
[namelookup_time] => 0
[connect_time] => 0.125
[pretransfer_time] => 0.125
[size_upload] => 0
[size_download] => 349
[speed_download] => 744
[speed_upload] => 0
[download_content_length] => 349
[upload_content_length] => 0
[starttransfer_time] => 0.469
[redirect_time] => 0
[certinfo] => Array ( )
[redirect_url] =>
)
我不知道什么解决方案可以,我一直在看这个问题现在希望有人可以帮助我感谢:)
I'm not sure what the solution can be and I have been looking at this problem for awhile now hopefully someone can help me thanks :)
推荐答案
添加
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');
这种方式告诉它代理(浏览器,蜘蛛等)请求内容的类型。
This way it tells it what type of agent (browser, spider, etc) is requesting the content.
最后,我将您的代码修改为
So finally, I modified your code to
<?php
$url ='http://api.ean.com/ean-services/rs/hotel/v3/avail?minorRev14&apiKey=p9ycn9cxb2zp3k3gfvbf5aym&cid=55505&locale=en_US&hotelId=122212&stateProvinceCode=%20NV%C2%A4cyCode=USD&arrivalDate=12/27/2012&departureDate=12/28/2012&room1=2,&room2=2,18,15&room3=3,16,16,15&room4=3,&includeDetails=true&includeRoomImages=true';
$header = array("Accept: application/json");
$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);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');
$retValue = curl_exec($ch);
$response = json_decode(curl_exec($ch));
$ee = curl_getinfo($ch);
print_r($ee);
print_r($retValue);
?>
它对我工作正常。你还可以检查吗?
and it is working fine for me. Can you also check?
这篇关于400 - Bad Request in Curl的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!