1

我正在为 Windows 8 的 Visual Studio Express 2012 中的 WinRT Surface 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);
});

这会导致 System.FormatException “值'application/soap+xml;charset=UTF-8' 的格式无效”。

如果我将内容类型直接添加到 HttpContent 而不是 HttpRequestMessage,我会得到相同的结果。

如果我只是注释掉添加内容类型的行(在这里只是进行愚蠢的试验和错误),我会收到状态码 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 回答