#region 發送xml文件給到指定URL
/// <summary>
/// 發送xml文件給NC
/// </summary>
/// <param name="v_strURL">目標Url</param>
/// <param name="v_objXMLDoc">需要發送的數據(XmlDocument格式的)</param>
/// <returns>服務器響應</returns>
public XmlDocument PostXMLTransaction(string v_strURL, XmlDocument v_objXMLDoc)
{
XmlDocument XmlResponse = null;
HttpWebRequest req;
HttpWebResponse rep = null;
Stream reqStream = null;
//創建一個流對象(用來讀取響應對象的內容)
Stream repStream = null;
XmlTextReader objXmlReader;
req = (HttpWebRequest)WebRequest.Create(v_strURL);
try
{
# region Start HttpRequest
byte[] bytes;
//傳遞的值
bytes = Encoding.UTF8.GetBytes(v_objXMLDoc.InnerXml);
//傳遞的方法,必須要寫,而已Get必須大寫。
req.Method = "POST";
req.ContentLength = bytes.Length;
//表頭的格式必須要寫,否則請求響應的頁面得不到要傳遞的值
req.ContentType = "text/xml;encoding='utf-8'";
//把傳遞的值寫到流中
reqStream = req.GetRequestStream();
reqStream.Write(bytes,0,bytes.Length);
//必須要關閉請求
reqStream.Close();
#endregion End HttpRequest
//創建一個響應對象,並從請求對象中得到響應對象的事例。
//rep = (HttpWebResponse)req.GetResponse();//此時程序才開始向目標網頁發送Post請求
rep = req.GetResponse() as HttpWebResponse;
#region Start HttpResponse
//HttpStatusCode.OK,指示請求成功,且請求的信息包含在響應中
if (rep.StatusCode == HttpStatusCode.OK)
{
//得到回應過來的流
repStream = rep.GetResponseStream();
//Load response stream into XMLReader
objXmlReader = new XmlTextReader(repStream);
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(objXmlReader);
XmlResponse = xmldoc;
objXmlReader.Close();
}
//響應關閉,要不會占用網絡資源
rep.Close();
#endregion
}
catch (WebException we)
{
Pub_Method.WriteFile("PostXMLTransaction函數中出現的WebException信息為:" + "\r\n", logName, out ErrMsg);
Pub_Method.WriteFile(we.ToString() + "\r\n\r\n", logName, out ErrMsg);
}
catch (Exception ex)
{
Pub_Method.WriteFile("PostXMLTransaction函數中出現的Exception信息為:" + "\r\n", logName, out ErrMsg);
Pub_Method.WriteFile(ex.ToString()+ "\r\n\r\n", logName, out ErrMsg);
}
finally
{
//關閉連接
reqStream.Close();
repStream.Close();
rep.Close();
//釋放對象
objXmlReader = null;
reqStream = null;
repStream = null;
rep = null;
//objHttpWebRequest = null;
if (req!= null)
{
req.Abort();
}
}
return XmlResponse;
}
#endregion
背景:
發送一段拼接好的xml格式字符串到指定的URL。 將XmlDocument轉化為string函數 小注: 1、Content-Type:很多時候無法解析就是Content-Type的問題。如果本身就是xml文件,請跳過這一步 動態生成的XML一定要將其設置為text/xml,否則默認就是text/html也就是普通的文本了。 2、HttpWebRequest在初始化的時候要先根據url進行創建,然後再設置Method和ContentType,然後再將請求的內容寫進去,通過GetRequestStream來返回流,再向這個流中寫請求內容便可以了。再通過request對象的GetResponse方法返回response對象,最後得到返回的數據流,這是通過GetResponseStream方法返回的,最後從這個流中讀出返回的數據便ok了。