2010-10-25 18 views
0

這是一個快速和骯髒的應用程序,只需短時間工作。我不是開發者,所以請不要毆打我。在asp中的以下代碼正常工作(用example.com和abc 123代替祕密信息)。C#發佈到瀏覽器失敗,有什麼想法?

我知道下面是非常不好的做法,但是這僅僅是出於演示的目的:

<form method="post" action="https://example.com/asppage.aspx" id="frm_main"> 
<input type="hidden" name="STATE" id="STATE" value="ABC" /> 
<input type="hidden" name="VALIDATION" id="VALIDATION" value="123/> 
<input type="submit" name="refresh_progress" value="Check Status" id="refresh_progress" /></form> 

然而,在我的C#後相同的代碼無法正常工作:

string PostData = "STATE=ABC&amp;VALIDATION=123"; 
webBrowser1.Navigate("https://example.com/asppage.aspx", "_blank", Encoding.Default.GetBytes(PostData), "Content-Type: application/x-www-form-urlencoded\n\r"); 

當新的瀏覽器窗口彈出,其默認的asppage.aspx表單沒有發佈數據。

任何想法我做錯了什麼?

+1

該示例缺少一些報價轉義(值ABC和123後)..是隻是在帖子中? – Fosco 2010-10-25 13:34:38

+0

是的,就在這篇文章中,我糾正了這個錯字。該代碼確實具有正確的轉義。 – shaiss 2010-10-25 13:39:20

回答

0

您的POST格式完全錯誤。

查看specification

+0

我糾正了一些錯別字,該鏈接解釋了一些帖子信息,但我不是貿易開發者,所以這有點令人困惑。請你詳細說明一下。 – shaiss 2010-10-25 13:41:30

1

您正在向webBrowser提供表單的html,POST數據是表單字段的名稱和值的序列化格式,您需要將其放入Navigate方法中。

的POSTDATA需要在格式:

inputname1=value1&inputname2=value2&inputname3=value3

您還需要URI編碼字符串,包括Content-Type: application/x-www-form-urlencoded作爲方法調用中的第四個參數。

+0

感謝您的指導,請詳細說明一下。我試過'字符串PostData =「QUJD」;'這是ABC編碼的Base64。這是正確的「序列化」數據嗎? – shaiss 2010-10-25 13:46:19

+0

查看編輯答案 – Chao 2010-10-25 13:53:12

+0

我根據您的建議更正了以上的帖子格式,但是,仍然沒有運氣。看起來我越來越近,但只是缺少一些小東西。 – shaiss 2010-10-25 14:07:24