封装helper类:
class WebServiceHelper
{
/// <summary>
/// 1. get请求http方法
/// </summary>
/// <param name="url">基础url</param>
/// <param name="method">请求方法</param>
/// <param name="param">请求参数:Dictionary方式</param>
/// <returns></returns>
public string getHttp(string url, string method, Dictionary<string, string> param)
{
string result = string.Empty;
string data = string.Empty;
StringBuilder sb = new StringBuilder();
try
{
// 参数拼接成字符串
foreach (string k in param.Keys)
{
if (sb.Length > 0)
{
sb.Append("&");
}
sb.Append(HttpUtility.UrlEncode(k) + "=" + HttpUtility.UrlEncode(param[k].ToString()));//请求参数
}
data = sb.ToString();
string finalUrl = url + "/" + method + "?" + data;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(finalUrl);
request.Proxy = null;
request.KeepAlive = false;
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8";
request.AutomaticDecompression = DecompressionMethods.GZip;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
result = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
if (response != null)
{
response.Close();
}
if (request != null)
{
request.Abort();
}
}
catch (Exception)
{
throw;
}
return result;
}
/// <summary>
/// 2. post请求WebSrvice的方法
/// </summary>
/// <param name="url">请求基础url</param>
/// <param name="method">请求方法</param>
/// <param name="param">请求参数:Dictionary方式</param>
/// <returns></returns>
public string postWebService(string url, string method, Dictionary<string, string> param)
{
string result = string.Empty;
string data = string.Empty;
StringBuilder sb = new StringBuilder();
try
{
// 参数拼接成字符串,最后编码
foreach (string k in param.Keys)
{
if (sb.Length > 0)
{
sb.Append("&");
}
sb.Append(HttpUtility.UrlEncode(k) + "=" + HttpUtility.UrlEncode(param[k].ToString()));//请求参数
}
data = sb.ToString();
byte[] bytes = Encoding.UTF8.GetBytes(data);//设置编码规格
// 1. 创建请求
//ASCIIEncoding encoding = new ASCIIEncoding();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + "/" + method);//创建Web请求
request.Method = "Post";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = bytes.Length;
request.Proxy = null;
// 2. 请求写入流
Stream writer = request.GetRequestStream();//获取用于写入请求数据的Stream对象
writer.Write(bytes, 0, bytes.Length);//把参数数据写入请求数据流
writer.Close();
// 3. 获得响应
HttpWebResponse response = (HttpWebResponse)request.GetResponse();//获得响应
//传过来为XML用以下方法解析
Stream stream = response.GetResponseStream();//获取响应流
XmlTextReader reader = new XmlTextReader(stream);
reader.MoveToContent();
result = reader.ReadInnerXml();
//传过来为json格式用以下方法解析
//StreamReader stream = new StreamReader(response.GetResponseStream(), Encoding.UTF8);//获取响应流
//result = stream.ReadToEnd();
//stream.Close();
reader.Close();
stream.Close();
response.Close();
}
catch (Exception)
{
throw;
}
return result;
}
/// <summary>
/// 3. post请求WebSrvice的方法
/// </summary>
/// <param name="url">请求基础url</param>
/// <param name="method">请求方法</param>
/// <param name="param">请求参数:Hashtable方式</param>
/// <returns></returns>
public string postWebServiceHashtable(string url, string method, Hashtable param)
{
string result = string.Empty;
string data = string.Empty;
StringBuilder sb = new StringBuilder();
try
{
// 参数拼接成字符串,最后编码
foreach (string k in param.Keys)
{
if (sb.Length > 0)
{
sb.Append("&");
}
sb.Append(HttpUtility.UrlEncode(k) + "=" + HttpUtility.UrlEncode(param[k].ToString()));//请求参数
}
data = sb.ToString();
byte[] bytes = Encoding.UTF8.GetBytes(data);//设置编码规格
// 1. 创建请求
//ASCIIEncoding encoding = new ASCIIEncoding();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + "/" + method);//创建Web请求
request.Method = "Post";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = bytes.Length;
request.Proxy = null;
// 2. 请求写入流
Stream writer = request.GetRequestStream();//获取用于写入请求数据的Stream对象
writer.Write(bytes, 0, bytes.Length);//把参数数据写入请求数据流
writer.Close();
// 3. 获得响应
HttpWebResponse response = (HttpWebResponse)request.GetResponse();//获得响应
//传过来为XML用以下方法解析
Stream stream = response.GetResponseStream();//获取响应流
XmlTextReader reader = new XmlTextReader(stream);
reader.MoveToContent();
result = reader.ReadInnerXml();
//传过来为json格式用以下方法解析
//StreamReader stream = new StreamReader(response.GetResponseStream(), Encoding.UTF8);//获取响应流
//result = stream.ReadToEnd();
//stream.Close();
reader.Close();
stream.Close();
response.Close();
}
catch (Exception)
{
throw;
}
return result;
}
}
调用方式:
static void Main(string[] args)
{
WebServiceHelper ws = new WebServiceHelper();
// 1. get请求http方法
string urlgetHttp = "http://www.kuaidi100.com";
// 接口: http://www.kuaidi100.com/query?type=快递公司编码&postid=物流单号
// 快递公司编码:申通="shentong" EMS="ems" 顺丰="shunfeng" 圆通="yuantong" 中通="zhongtong" 韵达="yunda" 天天="tiantian" 汇通="huitongkuaidi" 全峰="quanfengkuaidi" 德邦="debangwuliu" 宅急送="zhaijisong"
string methodgetHttp = "query";
Dictionary<string, string> paramgetHttp = new Dictionary<string, string>();
paramgetHttp.Add("type", "huitongkuaidi");
paramgetHttp.Add("postid", "71607485792218");
string getJson1 = ws.getHttp(urlgetHttp, methodgetHttp, paramgetHttp);
JObject result1 = (JObject)JsonConvert.DeserializeObject(getJson1);
Console.WriteLine(result1);
// 2. post请求WebSrvice的方法(Dictionary传参)
string url = "http://60.170.60.178:9018/EIFIRE_Interface.asmx";
string method = "nameLogin";
Dictionary<string, string> param = new Dictionary<string, string>();
param.Add("userName", "jfyh");
param.Add("userPwd", "eifire");
param.Add("registration_id", "1");
string getJson2 = ws.postWebService(url, method, param);
JObject result2 = (JObject)JsonConvert.DeserializeObject(getJson2);
Console.WriteLine(result2);
// 3. post请求WebSrvice的方法(Hashtable传参)
Hashtable paramht = new Hashtable();
paramht.Add("userName", "jfyh");
paramht.Add("userPwd", "eifire");
paramht.Add("registration_id", "1");
string getJson3 = ws.postWebServiceHashtable(url, method, paramht);
JObject result3 = (JObject)JsonConvert.DeserializeObject(getJson3);
Console.WriteLine(result3);
Console.ReadKey();
}