0

私は現在、WCF SOAP サービスの作成方法を学ぼうとしています。次に、PHP 経由でこれにアクセスしようとしていますが、現在エラーが発生しています。

以下は、WCF SOAP サービスにアクセスするためのコードです。

try
{
    $client = new SoapClient("http://localhost:8732/Design_Time_Addresses/SoapServer/Service1/?wsdl",
            array('soap_version'=>'SOAP_1_2', "trace" => 1, "exception" =>0));
    $result = $client->__soapCall("getData", array());

    echo "<pre>";
    print_r($result);
    echo "</pre>";
}
catch (Exception $e)
{
    echo $e->getMessage();
}

現在、次のエラーが発生しています。

Cannot process the message because the content type 'text/xml; charset=utf-8' was not the expected type 'application/soap+xml; charset=utf-8'.

私はこれをグーグルで検索しましたが、これまでのところ何も意味がありませんでした。どこかでその挿入を読みまし'soap_version'=>'SOAP_1_2'たが、何の違いもありませんでした。

SOAP サービスは、WcfTestClient ソフトウェアを使用すると正常に動作するため、PHP の実行方法に問題があるに違いありません。

更新 以下は SOAP リクエストヘッダーです

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-GB,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:PHPSESSID=o9iaupn13vq7p812t4bhos97p6; user=cboard
Host:localhost
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11

以下は応答ヘッダーです

Content-Length:142
Content-Type:text/plain
Date:Fri, 23 Nov 2012 21:35:55 GMT
Server:Microsoft-IIS/7.5
X-Powered-By:PHP/5.3.13
X-Powered-By:ASP.NET
4

2 に答える 2

0

ここでの問題は、返される応答がWebサービスの応答(application / xml)ではなくエラーページ(text / plain)であるということです。

それを試して修正するには、最初にエラーが何であるかを調べます。Wire Shark(または同様のもの)を使用して、何が返送されているかを確認します。

エラーの情報が問題を見つけるのに十分でない場合。Wire Sharkを再度使用して、phpクライアントとWCFテストクライアントからの要求をキャプチャしてから、2つを比較します。

于 2012-11-23T22:12:45.770 に答える
0

皆さんの助けと提案に感謝します.奇跡によって、私は問題が何であるかを見つけることができました.

wsHttpBindingバインディングを からに変更する必要がありましたが、basicHttpBindingPHP 経由でアクセスできるようになりました。

于 2012-11-23T22:50:35.193 に答える