以下代码返回WinForms和Windows 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);Error In 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 )中工作。
为什么这个不行?
发布于 2013-10-03 17:05:04
如果我没记错的话,我想我遇到了类似的事情。我以为这和ContentLength有关,但我真的不记得了。
下面是我最终使用的代码。不确定是否有用。
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "POST";
request.ContentType = "application/json";
string json = BuildJSON(TestConvert(tests));
var enc = new UTF8Encoding(false);
request.ContentLength = enc.GetByteCount(json);
using (StreamWriter requestWriter = new StreamWriter(request.GetRequestStream(), enc))
{
requestWriter.Write(json);
requestWriter.Close();
}https://stackoverflow.com/questions/19163319
复制相似问题