2012-03-12 16 views
0

私は、SOAPとWebサービスへの新たなんだ、とPHPを使用してサプライヤーのWSDL SOAPプロバイダに接続しようとしています。私は正常にAPIに接続し、メソッドのリストをプルダウンすることができました。エラーのWSDL SOAPメソッドを呼び出す - Microsoft.Web.Services.SoapFormatException

Microsoft.Web.Services.SoapFormatException:入力があるため、有効なSOAPメッセージではありませんでした私は機能の一つに、基本的なコールを作るしようとすると、しかし、私はこのエラーを取得していますと、バックサーバから返されましたEnvelopeまたは間違った名前空間のいずれかがあります。これはhttp://www.w3.org/2003/05/soap-envelopeです。 Microsoft.Web.Services.WebServicesExtension.BeforeDeserializeServerでMicrosoft.Web.Services.SoapEnvelope.Load(ストリームstream)(SOAPMessageのメッセージ)

でMicrosoft.Web.Services.SoapEnvelope.PostLoad()でこれは私のウェブでありますサービスコール:

$soapConnection = new SoapClient("http://webapi.testsupplier.com/gvitawapi.asmx?WSDL",array('soap_version' => SOAP_1_2, 'uri' => "http://webapi.testsupplier.com/")); 
var_dump($soapConnection->GetAllTestDataXML()); 

これはサプライヤのマニュアルからの応答XMLです。

POST /gvitawapi.asmx HTTP/1.1 
Host: webapi.testsupplier.com 
Content-Type: application/soap+xml; charset=utf-8 
Content-Length: length 
<?xml version="1.0" encoding="utf-8"?> 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
    <soap12:Body> 
    <GetAllTestDataXML xmlns="http://webapi.testsupplier.com/" /> 
    </soap12:Body> 
</soap12:Envelope> 

あなたが提供できるすべての考えは大変ありがとうございます。私はこれで何かをしなければならないか分かりません。

答えて

0

私は、接続時にSOAP 1.1に切り替えることでこれを実現できました。何らかの理由で動作しても、1.2に切り替えると同じエラーが発生します。また、例外を有効にして完全な応答テキストを取得することでデバッグするのに役立ちました。

+0

あなたがこのようなWebサービスのためのあなたの呼び出しで一緒にパラメータを渡したい場合はさらに、それはかなりのようにまっすぐ進む私が期待した通りではなかったです。私はパラメータが配列の中で渡されると仮定しました。その中の値は '$ soapConnection-> GetAllTestDataXML(array( 'id' => 5678));' のようになります。 $ param = array( 'id' => 5678); ' '$ soapConnection-> GetAllTestDataXML(array(' parameters '=> $ param));' – theninjasquad

関連する問題