【问题标题】:php curl help on HTTP Status 415关于 HTTP 状态 415 的 php curl 帮助
【发布时间】:2014-10-15 13:44:24
【问题描述】:

我遇到了获取 curl 响应的问题

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 -

输入状态报告

消息

说明服务器拒绝了这个请求,因为请求实体的格式不被请求的方法所请求的资源所支持。

请帮帮我。

【问题讨论】:

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


    【解决方案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);
    ?>
    

    【讨论】:

    • php.ini 中有设置状态码 415 吗?
    猜你喜欢
    • 1970-01-01
    • 2016-01-19
    • 2015-05-10
    • 1970-01-01
    • 2011-08-02
    • 2010-12-12
    • 1970-01-01
    • 2011-04-22
    • 2015-03-11
    相关资源
    最近更新 更多