1

以下のコードを実行すると、応答 500 内部サーバー エラーが発生しました。コードは完璧だと思います。だれか助けてもらえますか?

<?php
$xml = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
$xml .= '<CountryListRQ echoToken="DummyEchoToken" xmlns="http://www.hotelbeds.com/schemas/2005/06/messages" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.hotelbeds.com/schemas/2005/06/messages CountryListRQ.xsd">';
$xml .= '<Language>ENG</Language>';
$xml .= '<Credentials>';
$xml .= '<User>username</User>';
$xml .= '<Password>password</Password>';
$xml .= '</Credentials>';
$xml .= '</CountryListRQ>';

$url = 'http://212.170.239.71/appservices/ws/FrontendService?wsdl';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml; charset=utf-8; action="getCountryList"'));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('xml' => $xml));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$result = @curl_exec($ch);
echo "<pre>";
print_r($result);
exit;
if($result === false) {
    echo "Error performing request";
} else {
    $xml_doc = simplexml_load_string($result);
    echo 'status is ', $xml_doc->status, '<br/>';
    if ($xml_doc->status == 'SUCCESS') {
        print_r($result);
    } else {
        echo 'Error is ', $xml_doc->errormessage, '<br/>';
    }
}?>

こんな返事が返ってきたのですが、

HTTP/1.1 100 Continue

HTTP/1.1 500 Internal Server Error
Date: Sat, 02 Feb 2013 06:02:12 GMT
Server: Resin/2.1.17
Content-Type: text/xml; charset=utf-8
Vary: Accept-Encoding
Connection: close
Transfer-Encoding: chunked

soapenv:Server.userExceptionorg.xml.sax.SAXParseException: Content is not allowed in prolog.we3mpf01

誰でも私を助けることができますか?このホテルベッド API を使用して国のリストを取得するにはどうすればよいですか?

4

2 に答える 2

2

以下の http サービス URL を使用します。

http://212.170.239.71/appservices/http/AcceptanceTest

ホテルのベッドのサーバーがダウンしていたときに、このエラーが発生しました。

于 2013-06-04T05:50:04.203 に答える
1

エラー メッセージは、SOAP ラッパー要素 (<soap:Envelope>、<soap:Body> など) が不足していることを示しています。基本的な使用例を参照してください。

http://www.soapuser.com/basics3.html

ただし、低レベルの HTTP ツールである curl を使用してサーバーと対話する代わりに、SOAP パッケージを確認することをお勧めします。

http://php.net/manual/en/book.soap.php

これにより、すべてのラッピングが行われ、作業に適した OO レイヤーが提供されます。

何らかの理由で SOAP の下位レベルの詳細を意図的に学習している場合、少なくとも例に含まれる XML は、単独ではなく <soap:Envelope> と <soap:Body> の内部にある必要があります。

于 2013-02-02T06:58:06.800 に答える