C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 130 を表示中)
■77040 / )  Re[1]: SOAP通信でWebメソッド名をタグに出力しない方法について
□投稿者/ WebSurfer (647回)-(2015/09/07(Mon) 11:55:02)
No77021 (Amy さん) に返信

> そこで.NETでSOAPクライアントを作成して要求電文を飛ばしたところ、要求電文に.NET Wcfの
> メソッド名がタグに追加されていました。
> ・・・中略・・・
> しかし本来、このタグは不要で、下例の要求電文を飛ばさなければなりません。

上で「このタグは不要」と言われる理由が分かりませんが、そのタグがない
と WCF のどのメソッドが呼び出されたか WCF 側で分からないので、逆に
エラーになるのではないですか? (未検証ですが)

だから「.NETでSOAPクライアントを作成して」試験した時は期待通り応答が帰
ってきているのではないですか?

そうであれば、「Internal Server Error」の原因は Java で作ったクライアン
トアプリにあると思うのですが。


質問者さんがどのような WCF アプリを作ったか詳細不明なので話が通じてない
かもしれません。できれば共通の WCF アプリをベースに話をした方がよさそう
です。例えば下記。

10 行でズバリ!! [C#] WCF サービスの作成と利用
http://code.msdn.microsoft.com/windowsdesktop/10-C-WCF-a3831723

WCF 側を上記の通りに作って、クライアント側を「3. Windows クライアントで 
WCF サービスを利用する」に従って作ってみてください。

label1.Content = client.GetData(12345); というコードでは以下の要求が出て:

POST http://aspnet4site/Service.svc HTTP/1.1
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://tempuri.org/IService/GetData"
Host: aspnet4site
Content-Length: 161
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
    <GetData xmlns="http://tempuri.org/">
      <value>12345</value>
    </GetData>
  </s:Body>
</s:Envelope>

応答は以下の通りになります。もちろん結果は期待通りになります。

HTTP/1.1 200 OK
Content-Length: 206
Content-Type: text/xml; charset=utf-8
Server: Microsoft-IIS/7.0
X-Powered-By: ASP.NET
Date: Mon, 07 Sep 2015 02:16:07 GMT

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
    <GetDataResponse xmlns="http://tempuri.org/">
      <GetDataResult>You entered: 12345</GetDataResult>
    </GetDataResponse>
  </s:Body>
</s:Envelope>


#パケットキャプチャツールは WireShark より Fiddler2 の方がお勧めです。上の
 結果は Fiddler2 によるものです。

返信 編集キー/


管理者用

- Child Tree -