我正在为 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 方法进行发布,但我不确定如何使用该方法获得响应。
任何帮助将不胜感激,我提前感谢您的时间!