簡體   English   中英

FedEx Rate Service上的PHP SOAP“獲取HTTP正文……或分塊數據時出錯”

[英]PHP SOAP “Error Fetching http body … or chunked data” On FedEx Rate Service

對Fedex Rate服務執行SOAP請求時,出現“獲取HTTP正文時出錯,沒有內容長度,連接關閉或分塊的數據”。

運行Apache 2.4.4,PHP 5.4.12。 此代碼在運行Apache 2.2.3,PHP 5.3.27的其他服務器上運行。

這是我的PHP代碼:

require_once('fedex-common.php5');
$path_to_wsdl = __DIR__ . "/RateService_v10.wsdl";
ini_set( "soap.wsdl_cache_enabled", "0" );

$context = stream_context_create(array(
    'http'=>array(
        'protocol_version' => 1.0
    )
));

$client = new SoapClient( $path_to_wsdl, array( 'trace' => 1,  'stream_context'=>$context ) ); 

...

try {
    ...
    $response = $client->getRates( $request );
    ...
} catch ( SoapFault $exception ) {
    echo($client->__getLastRequestHeaders());
    echo($client->__getLastResponseHeaders());
    printFault( $exception, $client );
}

運行代碼會在catch塊中提供以下標頭-請求:

POST /web-services/rate HTTP/1.1
Host: ws.fedex.com
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.4.12
Content-Type: text/xml; charset=utf-8
SOAPAction: "getRates"
Content-Length: 3875

響應:

HTTP/1.1 200 OK
Date: Thu, 31 Oct 2013 19:12:23 GMT
Server: Apache/2.2
x-wily-servlet: Encrypt1 GaMcoOotgOSMyoYj73M4dqm654IQUUy2VYo7kRLnWqp7O1G9YaZThSMVcxtIAA7cQSSESAO/CtqxI1OyaPemJzOZK7N+WNRwu686y5jWfxAuKqFeRiYJ1NPQTJShYPzp7gOpypOE/sg3Ti/CjdT3XaNt6/pEd18+pXDMyIfKrxnz4xWyAOl9y4Rosae418ks0PYNS9GJy2iOfaSXRiWFkA==
X-Powered-By: Servlet/2.5 JSP/2.1
x-wily-info: Clear guid=0FEE460DCC8738E20EC18F87798CDA26
Vary: Accept-Encoding
Keep-Alive: timeout=8, max=1024
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/xml; charset=utf-8

我感到困惑的是,當我指定HTTP / 1.0時(使用其他問題的建議),請求是使用HTTP / 1.1發出的。 同樣在響應頭中,它肯定會返回分塊數據,從而導致該錯誤。 當我自己在Advanced REST客戶端(chrome擴展程序)中運行請求時,它可以正常運行,但還包含我認為引起問題的Transfer-Encoding: chunked塊頭。

我懷疑Apache或PHP配置存在某種問題。

解決方案:降級到Apache 2.2.22和PHP 5.3.13解決了該問題

降級到Apache 2.2.22和PHP 5.3.13解決了該問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM