發送Http請求調用webService


如果調用WebService的不是在.NET中,無法直接添加web引用,那怎么調用webservice。

有兩種方式

第一種方式:GET方式

  string strUrl = "http://127.0.0.1/rss/webservice.asmx/GetNews?topNum=2";
        HttpWebRequest hwrq = (HttpWebRequest)WebRequest.Create(strUrl);
        hwrq.Method = "GET";
        HttpWebResponse hwrp = (HttpWebResponse)hwrq.GetResponse();
        Stream stream = hwrp.GetResponseStream();
        XmlDocument doc = new XmlDocument();
        doc.Load(stream);
        string strLine = "";
        XmlNodeList list = doc.GetElementsByTagName("Table");
        for (int i = 0; i < list.Count; i++)
        {
            XmlNodeList chlist = list[i].ChildNodes;
            for (int j = 0; j < chlist.Count; j++)
            {
                strLine = strLine + chlist[j].Name + "\t" + chlist[j].InnerText + "\n";
            }
            strLine = strLine + "\n";
        }
        StreamWriter sw = new StreamWriter(@"c:/c.txt");
        sw.WriteLine(strLine);
        sw.Flush();
        sw.Close();

 

第二種方式:POST方式

string strUrl = "http://127.0.0.1/rss/webservice.asmx/GetNews";
        HttpWebRequest hwrq = (HttpWebRequest)WebRequest.Create(strUrl);
        hwrq.Method = "POST";
        hwrq.ContentType = "application/x-www-form-urlencoded";
        String param1 = HttpUtility.UrlEncode("topNum");
        param1 += "=" + HttpUtility.UrlEncode("5");
        byte[] bt = Encoding.UTF8.GetBytes(param1);
        hwrq.ContentLength = bt.Length;
        Stream sw = hwrq.GetRequestStream();
        sw.Write(bt, 0, bt.Length);
        sw.Close();
        HttpWebResponse hwrp = (HttpWebResponse)hwrq.GetResponse();
        Stream stream = hwrp.GetResponseStream();
        XmlDocument xmldoc = new XmlDocument();
        xmldoc.Load(stream);
        XmlNodeList list = xmldoc.GetElementsByTagName("Table");
        string strLine = "";
        for (int i = 0; i < list.Count; i++)
        {
            XmlNodeList chlist = list[i].ChildNodes;
            for (int j = 0; j < chlist.Count; j++)
            {
                strLine = strLine + chlist[j].Name + "\t" + chlist[j].InnerText + "\n";
            }
            strLine = strLine + "\n";
        }
        StreamWriter writer = new StreamWriter(@"c:\c.txt");
        writer.WriteLine(strLine);
        writer.Flush();
        sw.Close();

get方式與post方式的主要區別在於post方式的參數要經過url編碼,並在獲得請求之前傳送。

post的方式的參數一定要以實例中方式來寫,否則會出現HTTP請求500錯誤。

string param1 = HttpUtility.UrlEncode("topNum");

param1+="="+HttpUtility.UrlEncode("5");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM