[转]C#通过Http发送Soap请求

/// <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>