2012-05-23 70 views
0

我試圖從ASP.NET和JSP執行HTTP POST,但它不工作。HTTP從ASP.NET發佈到jsp

我一直在閱讀關於如何做到在C#中的HTTP POST,特來翻過代碼片段就像我寫了下面使用的HttpWebRequest的例子文章:

Stream stream = null; 
byte[] bytes = Encoding.ASCII.GetBytes(RendercXMLForPosting(cXMLContent)); 
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(ConfigurationManager.AppSettings["Address"]); 

webRequest.ContentType = "application/x-www-form-urlencoded"; 
webRequest.Method = "POST"; 
webRequest.ContentLength = bytes.Length; 
webRequest.CookieContainer = new CookieContainer(); 
webRequest.CookieContainer.Add(new Cookie("BuyerCoookie", punchOutSession.BuyerCookieID, "/", ConfigurationManager.AppSettings["Domain"])); 

try 
{ 
    stream = webRequest.GetRequestStream(); 
    stream.Write(bytes, 0, bytes.Length); 
} 
catch (Exception) 
{ 
    throw; 
} 
finally 
{ 
    if (stream != null) 
     stream.Close(); 
} 

當我嘗試這不會引發錯誤,但第三方網站不識別POST,第三方網站是JSP網站。

這是從ASP.NET發佈到JSP網站的錯誤方式嗎? 有什麼我失蹤? 在此先感謝

編輯! 我需要在帖子完成後將用戶重定向到發佈頁面,對此有何幫助?

+0

你清楚地知道,URL具有作爲JSP的''

指定的URL匹配嗎? – BalusC

+0

那麼沒關係。另一方顯然是濫用JSP而不是servlet來控制請求。 – BalusC

回答

2

嘗試刷新請求流,並從該請求得到響應,即:

stream = webRequest.GetRequestStream(); 
stream.Write(bytes, 0, bytes.Length); 
stream.Flush 
var rsp = webRequest.GetResponse(); 
using(var sr = new StreamReader(rsp.GetResponseStream()) 
    var result = sr.ReadToEnd(); // you might want to see what this is to debug 
+0

'stream.Flush()'後面的代碼只是在需要檢查響應時才需要。我猜這是不需要執行POST/ –

+0

我仍然建議獲取響應並閱讀它,因爲如果服務器檢測到客戶端連接已結束(可能會發生,如果您沒有得到響應)可能會停止處理, –