■77040 / inTopicNo.2) |
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 によるものです。
|
|