我试图做一个Http POST到Apache Web服务器。C# - HttpWebRequest - POST
我发现设置ContentLength似乎是工作请求所必需的。
我宁愿直接从GetRequestStream()创建一个XmlWriter,并将SendChunked设置为true,但请求在此时无限期地挂起。
这里是我的要求是如何创建的:
private HttpWebRequest MakeRequest(string url, string method)
{
HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
request.Method = method;
request.Timeout = Timeout; //Property in my class, assume it's 10000
request.ContentType = "text/xml"; //I am only writing xml with XmlWriter
if (method != WebRequestMethods.Http.Get)
{
request.SendChunked = true;
}
return request;
}
我怎样才能让SendChunked工作,所以我没有设置的ContentLength?在将它发送到服务器之前,我没有看到将XmlWriter的字符串存储在某个地方的原因。
编辑:这里是我的代码导致了问题:
using (Stream stream = webRequest.GetRequestStream())
{
using (XmlWriter writer = XmlWriter.Create(stream, XmlTags.Settings))
{
Generator.WriteXml<TRequest>(request, writer);
}
}
之前我做了一个使用Stream对象从GetRequestStream()返回没有,我以为处置时的XmlWriter关闭了流,但这不是这样。
下面的答案之一,让我来这个。我会将它们标记为答案。
就HttpWebRequest而言,我的原始代码工作得很好。
是否对另一个网站服务器工作(而不是Apache)?你是否通过XmlWriter或RequestStream关闭了你的流? – 2009-12-14 18:22:24
我没有一个Windows服务器来尝试,我不得不花时间编写一些C#代码来阅读帖子。我觉得像调整HttpWebRequest上的设置应该解决这个问题。 – jonathanpeppers 2009-12-14 19:36:34