摘要:C# httpwebrequest post
SV好久沒來發文啦~
弄了好久這東西,
感謝這篇的解說:
http://blog.xuite.net/peeter/diary/33162221
然後一樣的作法,
string param = "VARIABLE1=" + tbNewAcc.Text + "&VARIABLE2=" + tbNewPW.Password;
byte[] bs = Encoding.ASCII.GetBytes(param);
Uri uri = new Uri(" http://xxx.xxx.xxx.xxx:8080/");
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uri);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = bs.Length;
Stream reqStream = req.GetRequestStream();
reqStream.Write(bs, 0, bs.Length);
reqStream.Close();
try
{
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string tmp = reader.ReadToEnd();
response.Close();
if (tmp == "ERx0001")
{
MessageBox.Show(tmp);
//如果出現這樣的回傳值則做什麼事情
//這邊是我同事設定的,所以回傳什麼值就要看網址的設計囉
}
else
{
MessageBox.Show(tmp);
//沒有錯誤則做什麼事情
}
}
catch (WebException ex)
{
MessageBox.Show(ex.ToString());
//404表示uri有錯誤
}
中間加入如果uri錯誤的判斷,uri請輸入自己要的網址喔!
然後在找這類訊息的時候發現了有趣的東西,
如果response改成這樣:
WebResponse response = request.GetResponse ();
// Display the status.
Console.WriteLine (((HttpWebResponse)response).StatusDescription);
如果成功通常會顯示OK。
當初以為用這個就天下太平,想不到同事跟我說:
「那個OK不是我的程式回的呀!」
才發現有趣的東西XDDD
也就是說如果將StatusDescription改成其他的,
就會顯示很多好玩的東西,像是:
.ContentType
就會跑出"text/html"
所以修改那個地方,你可以測出很多網頁資訊。
順帶一提,如果uri後面沒接方法,
理論上應該會跑出整個網頁原始碼。
用這樣的方式,你就可以先測試google還是什麼的網址囉~
學到東西真開心(誤,不就是複製貼上)~
新增:
有時候回覆的是"不乾淨"的資訊,
所以可以將tmp.Trim();
(將空格給拿掉)~
這樣才能更準確的比對原本設定的錯誤碼喔~(或回傳值)
SV剛剛就發現這個蠢問題,還差點又要求助同事了xdddd