1

Visual Studio Express 2012 for Windows8でWinRTSurface TabletのC#コードを記述しています。xmlはフォーマットされていますが(正常に動作する他のプラットフォームのアプリから移植しています)、要求の構文に問題があるようです。

私はいくつかの異なるアプローチを試してきましたが、Windowsストアアプリのメソッドの制限で行き詰まりました。私が最後に試したのは、HttpClient、HttpContent、およびHttpRequestMessageを使用することです:(明らかに、実際のxmlとURLは省略しています)

string xmlSOAP = "..............[my soap xml]................."
string url = "http://example.domain.com/myMagicalwebservice.asmx"
string SOAPAction = "www.blahblah.com/doXMLStuff";

HttpClient hc = new 

HttpContent content = new String Content(xmlSOAP);

HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Post, url);
req.Headers.Add("SOAPAction", SOAPAction);
req.Method = HttpMethod.Post;
req.Content = content;
req.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/soap+xml;charset=UTF-8");

hc.SendAsync(req).ContinueWith(responseTask =>
{
    System.Diagnostics.Debug.WriteLine(responseTask.Result);
});

これにより、「値の形式'application / soap + xml; charset=UTF-8'が無効です」というSystem.FormatExceptionが発生します。

代わりに、コンテンツタイプをHttpRequestMessageではなくHttpContentに直接追加すると、同じ結果が得られます。

コンテンツタイプを追加する行をコメントアウトするだけで(ここでは試行錯誤を繰り返します)、ステータスコード415「サポートされていないメディアタイプ」の結果が表示されます。

HttpClientのPostAsyncメソッドを使用して投稿しようとしましたが、それを使用して応答を取得する方法がわかりません。

どんな助けでも大歓迎です、そして私はあなたの時間を前もって感謝します!

4

1 に答える 1

2

これを試して:

req.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/soap+xml;charset=UTF-8");
于 2012-12-14T04:02:28.240 に答える