C# httpwebrequest post

  • 1794
  • 0

摘要: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