0

初めてWebサービスを使用しようとしています。VS2005 を使用しており、Web サービス関数を呼び出そうとしています。Web 参照を WSDL に追加し、自動生成されたコードを取得しました。

エラー/例外なしで呼び出すことができますが、サービス関数から何も返されません。コードを実行したときにネットワーク トラフィックをパケット スニッフィングし、Web サービスが実際にデータを送り返したことを確認しました。

    Dim proxy As New MyServer.MyService
    Dim response As New Object()
    response = proxy.getAllThings(Nothing)

WSDLでは、パラメーターとしてオブジェクトが必要であり、オブジェクトを返すと書かれています。また試してみました:
Dim response As New Object および
Dim response As String=""

応答は常に Nothing/Null です

スニッフィングされたデータは、「応答」に含まれると予想していた平文の SOAP エンベロープを示しています。

Web サービスから自分のコンピューターの IP アドレスに送信された盗聴データ:

    Server: Apache-Coyote/1.1
    Content-Type: text/xml;charset=utf-8
    Transfer-Encoding: chunked
    Date: Mon, 23 Apr 2012 08:26:01 GMT
    321
    <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><cmp:things xmlns:cmp="http://cmp.com"><cmp:thing><cmp:id>10</cmp:id><cmp:name>ASM</cmp:name></cmp:thing><cmp:thing><cmp:id>1</cmp:id><cmp:name>CHP</cmp:name></cmp:thing><cmp:thing><cmp:id>11</cmp:id><cmp:name>UDB</cmp:name></cmp:thing><cmp:thing><cmp:id>8</cmp:id><cmp:name>GKH</cmp:name></cmp:thing><cmp:thing><cmp:id>5</cmp:id><cmp:name>GGW</cmp:name></cmp:thing><cmp:thing><cmp:id>6</cmp:id><cmp:name>LRZ</cmp:name></cmp:thing><cmp:thing><cmp:id>7</cmp:id><cmp:name>MRN</cmp:name></cmp:thing><cmp:thing><cmp:id>2</cmp:id><cmp:name>KBV</cmp:name></cmp:thing><cmp:thing><cmp:id>3</cmp:id><cmp:name>CXE</cmp:name></cmp:thing></cmp:things></soapenv:Body></soapenv:Envelope>
    0

このスニッフィングされたデータは「応答」に表示されません

例としてhttp://msdn.microsoft.com/en-us/library/aa275675%28v=sql.80%29.aspxを使用しました。

どんな助けでも大歓迎です。

編集: 「応答」には、Web サービス呼び出しの結果からのデータが含まれている必要があります。

4

1 に答える 1

1

VS2010 Express を別のコンピューターにインストールしてサービスに接続すると、エラー メッセージが表示されました。基本的に、サービスからの応答は WSDL と一致しません。VS2005 でエラーが発生しなかった理由がわかりません。

これは、Javaクライアントによって消費される本番環境のサービスであり、明らかに不一致を気にしません。

于 2012-04-25T10:35:12.453 に答える