POST 紧凑框架中的 HttpWebRequest
POST HttpWebRequest in compact framework
我正在紧凑型框架中开发应用程序,需要发送 POST 一个 Json 到服务器
public SResponse SaveDoc(Document document)
{
var url = WorkSettings.URL + "savedoc/" + document.DocType + "/" + document.DocNumber;
string json = JsonConvert.SerializeObject(document);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = false;
request.ProtocolVersion = HttpVersion.Version10;
request.Method = "POST";
// turn our request string into a byte stream
byte[] postBytes;
if (json != null)
{
postBytes = Encoding.UTF8.GetBytes(json);
}
else
{
postBytes = new byte[0];
}
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postBytes.Length;
Stream requestStream = request.GetRequestStream();
// now send it
requestStream.Write(postBytes, 0, postBytes.Length);
requestStream.Close();
HttpWebResponse response;
response = (HttpWebResponse)request.GetResponse();
return GetResponseData(response);
}
异常错误
This request requires buffering of data for authentication or redirection to be successful.
我自己更熟悉 HttpClient 并且从未使用过 HttpWebRequest,但是我收到的任何处理重定向的错误都可以通过确保您的 URL 完全正确来快速解决。
var url = WorkSettings.URL + "savedoc/" + document.DocType + "/" + document.DocNumber
确保上面的 URL 正是您要保存到的 URL。也许您在发生错误的 URL 中添加了一个额外的“/”?或者您可能需要在 url 的末尾附加“.php”或“.html”。
如果您无法调试代码以逐步了解这个确切的 URL 是什么,您也可以在发生重定向请求时使用 Wireshark 或 Fiddler 视图。
其他需要考虑的问题:
1) 如果发送错误的URL,是否希望出现auto-redirects?可能,但也许不是。如果不是,值得指出的是 HttpWebRequest 的 AutoRedirect property 默认设置为 true。
2) 是否要专门处理这个错误?或者错误可能不是由 URL 稍微不正确引起的。如果是这样,我没有太多处理此错误的个人经验。也许 this Whosebug post 有一个非常简单的解决方案可以解决问题。
我正在紧凑型框架中开发应用程序,需要发送 POST 一个 Json 到服务器
public SResponse SaveDoc(Document document)
{
var url = WorkSettings.URL + "savedoc/" + document.DocType + "/" + document.DocNumber;
string json = JsonConvert.SerializeObject(document);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = false;
request.ProtocolVersion = HttpVersion.Version10;
request.Method = "POST";
// turn our request string into a byte stream
byte[] postBytes;
if (json != null)
{
postBytes = Encoding.UTF8.GetBytes(json);
}
else
{
postBytes = new byte[0];
}
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postBytes.Length;
Stream requestStream = request.GetRequestStream();
// now send it
requestStream.Write(postBytes, 0, postBytes.Length);
requestStream.Close();
HttpWebResponse response;
response = (HttpWebResponse)request.GetResponse();
return GetResponseData(response);
}
异常错误
This request requires buffering of data for authentication or redirection to be successful.
我自己更熟悉 HttpClient 并且从未使用过 HttpWebRequest,但是我收到的任何处理重定向的错误都可以通过确保您的 URL 完全正确来快速解决。
var url = WorkSettings.URL + "savedoc/" + document.DocType + "/" + document.DocNumber
确保上面的 URL 正是您要保存到的 URL。也许您在发生错误的 URL 中添加了一个额外的“/”?或者您可能需要在 url 的末尾附加“.php”或“.html”。
如果您无法调试代码以逐步了解这个确切的 URL 是什么,您也可以在发生重定向请求时使用 Wireshark 或 Fiddler 视图。
其他需要考虑的问题:
1) 如果发送错误的URL,是否希望出现auto-redirects?可能,但也许不是。如果不是,值得指出的是 HttpWebRequest 的 AutoRedirect property 默认设置为 true。
2) 是否要专门处理这个错误?或者错误可能不是由 URL 稍微不正确引起的。如果是这样,我没有太多处理此错误的个人经验。也许 this Whosebug post 有一个非常简单的解决方案可以解决问题。