自己做完了post xml的功能,想記一下日記,卻發現網上的提供了更多的一種方法,就是xmlhttp的一種,所以轉過來一下。
原文:post xml檔案給指定url的2種方法
1 這段代碼是在網上搜到的,拿來共用,項目正好要用到。其中的data你只需要傳遞一個xml字串就可以
protected string PostXmlToUrl(string url,string data)
{
HttpWebRequest hwr = (HttpWebRequest)HttpWebRequest.Create(url);
hwr.Method = "POST";
Stream stream = hwr.GetRequestStream();
StreamWriter sw = new StreamWriter(stream,System.Text.Encoding.UTF8);
sw.Write(data);
sw.Close();
stream = hwr.GetResponse().GetResponseStream();
StreamReader sr = new StreamReader(stream,System.Text.Encoding.UTF8);
string ret = sr.ReadToEnd();
sr.Close();
return ret;
}
2 利用xmlhttp對象,來發送請求.
StreamReader sr=new StreamReader(Server.MapPath(XMLPathFull));
MSXML2.XMLHTTPClass xmlHttp = new MSXML2.XMLHTTPClass();
xmlHttp.open("post",strURL,false,"","");
xmlHttp.setRequestHeader ("Content-type","text/xml;charset=UTF-8");
xmlHttp.send(sr.ReadToEnd());
//得到response
string backxmlstring=xmlHttp.responseText.ToString();
解讀這個響應的話只需要2行代碼,
byte[] buf = Request.BinaryRead(Request.ContentLength);
string str = System.Text.Encoding.UTF8.GetString(buf);
這樣就能得到。
其實以上代碼就可以建立一個簡單的伺服器間的互動模式,類比的b/s架構,跟使用webservice與伺服器間互動差不多,soap和http其實比較類似的。