HTTP状态415上的php curl帮助

时间:2014-10-15 13:44:24

标签: php curl http-status-code-415

我面临卷曲响应的问题

的test.xml

<?xml version="1.0" encoding="UTF-8"?>
<MMTHotelSearchRequest Offset="0" Rows="500">
    <POS>
      <Requestor type="B2BAgent" idContext="AFF" id="AFF13856" channel="B2BWeb"/>
      <Source iSOCurrency="INR"/>
   </POS>
    <RequestHotelParams>
        <CityCode>DEL,XRO</CityCode>
    </RequestHotelParams>
    <RequiredFields>hotelInfo,facilitiesInfo,areaInfo,contactInfo,roomsInfo,mediaInfo</RequiredFields>
</MMTHotelSearchRequest>




<?php
$filename = "test.xml";
$handle = fopen($filename, "r");
$xml = fread($handle, filesize($filename));
fclose($handle);

$url = "https://apim-gateway.mmtcloud.com/mmt-htlsearch/1.0/staticsearch/v1.0/hotelData";
$headers = array(             
                            "Content-type: text/xml;charset=\"utf-8\"", 
                            "Accept: text/xml", 
                            "Cache-Control: no-cache", 
                            "Pragma: no-cache", 
                            "Content-length: ".strlen($xml),
                            ); 


            $soap_do = curl_init(); 
            curl_setopt($soap_do, CURLOPT_URL,            $url);   
            curl_setopt($soap_do, CURLOPT_CONNECTTIMEOUT, 60); 
            curl_setopt($soap_do, CURLOPT_TIMEOUT,        60); 
            curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true );
            curl_setopt($soap_do, CURLOPT_SSL_VERIFYPEER, false);  
            curl_setopt($soap_do, CURLOPT_SSL_VERIFYHOST, false); 
            curl_setopt($soap_do, CURLOPT_POST,           true ); 
            curl_setopt($soap_do, CURLOPT_POSTFIELDS,     $xml); 
            curl_setopt($soap_do, CURLOPT_HTTPHEADER,     $headers); 


            $result = curl_exec($soap_do);

            print_r($result);
?>

我低于错误

HTTP状态415 -

输入状态报告

消息

描述服务器拒绝了此请求,因为请求实体所采用的方法所请求的资源不支持该格式()。

请帮帮我。

1 个答案:

答案 0 :(得分:1)

CURLOPT_POSTFIELDS应该是键值/对的数组。您应该创建一个数组,将xml数据添加到正确的键字段并使用curl发送该数据。

我添加了一个例子:

<?php
$filename = "test.xml";
$handle = fopen($filename, "r");
$xml = fread($handle, filesize($filename));
fclose($handle);

$url = "https://apim-gateway.mmtcloud.com/mmt-htlsearch/1.0/staticsearch/v1.0/hotelData";
$headers = array(             
                            "Content-type: text/xml;charset=\"utf-8\"", 
                            "Accept: text/xml", 
                            "Cache-Control: no-cache", 
                            "Pragma: no-cache", 
                            "Content-length: ".strlen($xml),
                            ); 
$postdata = array("fieldkey" => $xml); //<-------------

        $soap_do = curl_init(); 
        curl_setopt($soap_do, CURLOPT_URL,            $url);   
        curl_setopt($soap_do, CURLOPT_CONNECTTIMEOUT, 60); 
        curl_setopt($soap_do, CURLOPT_TIMEOUT,        60); 
        curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true );
        curl_setopt($soap_do, CURLOPT_SSL_VERIFYPEER, false);  
        curl_setopt($soap_do, CURLOPT_SSL_VERIFYHOST, false); 
        curl_setopt($soap_do, CURLOPT_POST,           true ); 
        curl_setopt($soap_do, CURLOPT_POSTFIELDS,     $postdata); //<----------- 
        curl_setopt($soap_do, CURLOPT_HTTPHEADER,     $headers); 

        $result = curl_exec($soap_do);

        print_r($result);
?>