C# 后台请求web服务方法

/// <summary>

/// 传输方法

/// </summary>

/// <param name="url">接口地址</param>

/// <param name="ms">序列化后的数据</param>

/// <returns></returns>

public static JObject ResponseBind(string url, string buffer)

{

SecurityUtils su = new SecurityUtils();//给值

IDictionary<string, string> parameters = new Dictionary<string, string>();

parameters.Add("request", buffer);

string strReturn = su.ReturnActionFromXml(url, parameters);

JObject jo = (JObject)JsonConvert.DeserializeObject(strReturn);

string responsestr = jo["response"] != null ? jo["response"].ToString().Trim() : "";//执行结果

JObject jo2 = (JObject)JsonConvert.DeserializeObject(responsestr);

return jo2;

}

public string ReturnActionFromXml(string url, IDictionary<string, string> parameters)

{

string xml;

HttpWebResponse response = HttpWebResponseUtility.CreatePostHttpResponse(url, parameters, null, null, Encoding.UTF8, null);

using (StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8))

{

xml = sr.ReadToEnd();

}

return xml;

}

using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Net;

using System.Net.Security;

using System.Security.Cryptography.X509Certificates;

using System.Text;

using System.Web;

namespace Dscf.Client.InformationAuditWeb.Handler

{

public class HttpWebResponseUtility

{

private static readonly string DefaultUserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";

public static HttpWebResponse CreateGetHttpResponse(string url, int? timeout, string userAgent, CookieCollection cookies)

{

if (string.IsNullOrEmpty(url))

{

throw new ArgumentNullException("url");

}

HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;

request.Method = "GET";

request.UserAgent = DefaultUserAgent;

if (!string.IsNullOrEmpty(userAgent))

{

request.UserAgent = userAgent;

} if (timeout.HasValue)

{

request.Timeout = timeout.Value;

} if (cookies != null)

{

request.CookieContainer = new CookieContainer();

request.CookieContainer.Add(cookies);

}

return request.GetResponse() as HttpWebResponse;

}

public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters, int? timeout, string userAgent, Encoding requestEncoding, CookieCollection cookies)

{

if (string.IsNullOrEmpty(url))

{ throw new ArgumentNullException("url"); }

if (requestEncoding == null)

{

throw new ArgumentNullException("requestEncoding");

}

HttpWebRequest request = null; //如果是发送HTTPS请求

if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))

{

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);

request = WebRequest.Create(url) as HttpWebRequest;

request.ProtocolVersion = HttpVersion.Version10;

}

else

{

request = WebRequest.Create(url) as HttpWebRequest;

}

request.Method = "POST";

request.ContentType = "application/x-www-form-urlencoded";

if (!string.IsNullOrEmpty(userAgent))

{

request.UserAgent = userAgent;

}

else

{

request.UserAgent = DefaultUserAgent;

} if (timeout.HasValue)

{

request.Timeout = timeout.Value;

} if (cookies != null)

{

request.CookieContainer = new CookieContainer();

request.CookieContainer.Add(cookies);

}

//如果需要POST数据

if (!(parameters == null || parameters.Count == 0))

{

StringBuilder buffer = new StringBuilder(); int i = 0;

foreach (string key in parameters.Keys)

{

if (i > 0)

{

buffer.AppendFormat("&{0}={1}", key, parameters[key]);

}

else

{

buffer.AppendFormat("{0}={1}", key, parameters[key]);

} i++;

}

byte[] data = requestEncoding.GetBytes(buffer.ToString());

using (Stream stream = request.GetRequestStream())

{ stream.Write(data, 0, data.Length); }

} return request.GetResponse() as HttpWebResponse;

}

private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)

{

return true; //总是接受

}

}

}