【发布时间】:2013-10-10 09:28:55
【问题描述】:
以下代码在 WinForms 和 Windows Phone 8 应用程序中返回错误。
代码
var jsonData = "jsonStringGoesHere";
var uri = new Uri("urlGoesHere");
var webRequest = (HttpWebRequest)WebRequest.Create(uri);
webRequest.Method = "POST";
webRequest.ContentType = "application/json";
webRequest.ContentLength = jsonData.Length;
webRequest.BeginGetRequestStream(ar =>
{
try
{
using (var os = webRequest.EndGetRequestStream(ar))
{
var postData = Encoding.UTF8.GetBytes(jsonData);
os.Write(postData, 0, postData.Length);
}
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
webRequest.BeginGetResponse(
ar2 =>
{
try
{
using (var response = webRequest.EndGetResponse(ar2))
using (var reader = new StreamReader(response.GetResponseStream()))
{
var received = reader.ReadToEnd();
}
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
}, null);
}, null);
错误
在 WinForms 中:[System.Net.WebException] = {"The remote server returned an error: (400) Bad Request."}
在 WP8 中The remote server returned an error: NotFound。
WCF 服务运行良好,因为我已让它们在 Fiddler 和其他类型的应用程序(如 Android/iPhone)中运行。
为什么这不起作用?
【问题讨论】:
-
你的服务器不喜欢你。比较 Fiddler 中的请求。
-
我比较过。它们完全相同。
-
为什么这行不通:(:(:(:(:((:
-
肯定有什么不同。检查标题等是否相同。如果您从 Fiddlers Composer 调用该方法,它会起作用吗?可以分享你的网址吗?
-
不幸的是,我无法共享 URL,但是当我在 Fiddler 中发出请求时,JSON 正文完全相同,并且 C# 代码中的标头也相同,我使用的是 UTF -8 和 application/json... 与 Fiddler 请求相同... 只是没有意义。
标签: c# json wcf webrequest