我有以下代码,但是,它没有返回任何内容 - 一个空白页面。但是,如果我插入正确的参数并将整个链接放在Web浏览器上,它将返回我想要的结果。我不想使用file_get_contents,因为我需要将此函数用于其他API调用,这些调用无法通过输入地址栏上的整个链接返回结果。谢谢你的帮助。
<?php
$data_string ='<HotelListRequest><hotelId>A HOTEL</hotelId></HotelListRequest>';
// Tell CURL the URL of the recipient script
$curl_handle = curl_init ();
curl_setopt ($curl_handle, CURLOPT_URL, 'http://api.ean.com/ean-services/rs/hotel/v3/info?minorRev=4&cid=MYID&apiKey=MYAPIKEY&customerSessionId=&locale=en_US¤cyCode=USD&xml=');
// This section sets various options. See http://www.php.net/manual/en/function.curl-setopt.php
curl_setopt ($curl_handle, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($curl_handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($curl_handle, CURLOPT_POST, true);
curl_setopt ($curl_handle, CURLOPT_POSTFIELDS, $data_string);
// Perform the POST and get the data returned by the server.
$result = curl_exec ($curl_handle);
// Close the CURL handle
curl_close ($curl_handle);
echo $result;
?>
答案 0 :(得分:0)
如果您将所有内容放入浏览器并且它可以正常工作,那么您就是在使用GET数据。该服务是否支持使用POST数据(这是您在示例中发送的内容)?您是否尝试通过CURLOPT_URL发送所有数据?
此外,您还需要将数据字符串更改为
"xml=".$data_string
也可能是其他参数(取决于API)。
答案 1 :(得分:0)
根据http://php.net/manual/en/function.curl-setopt.php:
要在HTTP“POST”操作中发布的完整数据。要发布文件, 使用@预先添加文件名并使用完整路径。文件类型可以是 通过跟随文件名中的类型明确指定 format'; type = mimetype'。此参数可以作为a传递 urlencoded字符串,如'para1 = val1&amp; para2 = val2&amp; ...'或作为数组 字段名称为键,字段数据为值。如果value是一个数组, Content-Type标头将设置为multipart / form-data。截至PHP 5.2.0,如果使用@前缀将文件传递给此选项,则value必须是数组。
因此,您应该修改$ data_string变量内容以匹配所需的格式。