我試圖做一個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