簡體   English   中英

PHP發送與cURL不同的XML URL訪問

[英]PHP sending XML URL access different to cURL

我具有此URL訪問權限: http : //bookings.seawings.ae/remoteconnect/default.asp?XML=%3Ccs%3E%0D%0A+%3Co+n%3D%22authenticationcode%22+v%3D%22d657cce7fa320a23950dca157fe693b8%22 %2F%3E%0D%0A +%3CC + N%3D%22flightsearch%22%3E%0D%0A ++%3Cq + N%3D%22StartDate%22 + v%的3D%2211-APR-2012%22%2F%3E %0D%0A ++%3Cq + N%3D%22EndDate%22 + v%的3D%2211-APR-2014%22%2F%3E%0D%0A ++%3Cq + N%3D%22Typeofflight%22 + v%的3D%22SILVER %22%2F%3E%0D%0A ++%3Cq + N%3D%22Seats_Adult%22 + v%的3D%228%22%2F%3E%0D%0A +%3C%2FC%3E%0D%0A%3C%2Fcs %3E ,它返回:

<cs> <c n="flightsearch"> <q n="XSD" v="system message [QVIEW.NO_ACCESS] Info: No Access [CQV00055.QVIEW.RUN]"/> <q n="XML" v="system message [QVIEW.NO_ACCESS] Info: No Access [CQV00055.QVIEW.RUN]"/> </c> </cs>

但是當我嘗試在PHP中運行它時:

       <?php $request_xml = '<cs> <o n="authenticationcode" v="d657cce7fa320a23950dca157fe693b8"/> <c n="FlightSearch"> <q n="StartDate" v="1-Jul-2013"/> <q n="EndDate" v="30-Jul-2013"/> <q n="Seats_adult" v="3"/> </c> </cs>';
        $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://bookings.seawings.ae/remoteconnect/default.asp'); 
     curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSLVERSION, 3); 
curl_setopt($ch, CURLOPT_TIMEOUT, 4); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $request_xml); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: close'));
 $result = curl_exec($ch);
        echo stripslashes($result);
        curl_close($ch);
        ?>

它只會返回:“”“我做錯了什么?

您的代碼有很多問題:

這是一個快速的示例,我將解釋那里發生的事情:

$request_xml = '<cs> <o n="authenticationcode" v="d657cce7fa320a23950dca157fe693b8"/> <c n="FlightSearch"> <q n="StartDate" v="1-Jul-2013"/> <q n="EndDate" v="30-Jul-2013"/> <q n="Seats_adult" v="3"/> </c> </cs>';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://bookings.seawings.ae/remoteconnect/default.asp');
//curl_setopt($ch, CURLOPT_USERPWD, $username.':'.$password);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_HEADER, true); // if you want to disable printing headers set this to false , or simply remove it;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSLVERSION, 4); // <<
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(['XML' => $request_xml]));
$result = curl_exec($ch);
curl_close($ch);

選項CURLOPT_POSTFIELDS中的第一個問題是您將xml參數作為字符串發送,而服務器/ api需要帶有一個名為XML參數的普通POST請求,並將xml數據作為字符串保存

另一個問題是,您CURLOPT_SSLVERSION選項正對另一端造成麻煩,因此使用CURL_SSLVERSION_TLSv1_0 (4)選項已修復該問題;

暫無
暫無

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

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