1. 程式人生 > >[轉]C#通過Http發送Soap請求

[轉]C#通過Http發送Soap請求

apr static utili stringbu end mar data resp 廣東

/// <summary>
/// 發送SOAP請求,並返回響應xml
/// </summary>
/// <param name="url">請求地址</param>
/// <param name="datastr">SOAP請求信息</param>
/// <returns>返回響應信息</returns>
public static string GetSOAPReSource(string url, string datastr)
{


//發起請求
Uri uri = new Uri(url);
WebRequest webRequest = WebRequest.Create(uri);
webRequest.ContentType = "text/xml; charset=utf-8";
webRequest.Method = "POST";
using (Stream requestStream = webRequest.GetRequestStream())
{
byte[] paramBytes = Encoding.UTF8.GetBytes(datastr.ToString());
requestStream.Write(paramBytes, 0, paramBytes.Length);
}

//響應
WebResponse webResponse = webRequest.GetResponse();
using (StreamReader myStreamReader = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8))
{
string result = "";
return result=myStreamReader.ReadToEnd();
}
}

示例:調用webservice查詢IP地址信息

webservice地址:http://www.wjg121.cn/Service/IPAddress.asmx?op=GetIPCountryAndLocal

static void Main(string[] args)
{


//構造soap請求信息
StringBuilder soap = new StringBuilder();
soap.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
soap.Append("<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">");
soap.Append("<soap:Body>");
soap.Append("<GetIPCountryAndLocal xmlns=\"http://tempuri.org/\">");
soap.Append("<RequestIP>183.39.119.90</RequestIP>");
soap.Append("</GetIPCountryAndLocal>");
soap.Append("</soap:Body>");
soap.Append("</soap:Envelope>");

string url = "http://www.wjg121.cn/Service/IPAddress.asmx";
Console.WriteLine(WebServiceUtility.GetSOAPReSource(url,soap.ToString()));
Console.ReadKey();

}

//返回結果:

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.
xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetIPCountryAndLocalR
esponse xmlns="http://tempuri.org/"><GetIPCountryAndLocalResult>廣東省電信</GetI
PCountryAndLocalResult></GetIPCountryAndLocalResponse></soap:Body></soap:Envelop
e>

[轉]C#通過Http發送Soap請求