请求WebService的方法

封装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();
}

相关文章

1.使用ajax调用varxhr;functioninvoke(){if(window.ActiveXO...
               好不容易把WebService服务器...
1新建一个工程项目用来做服务端增加一个MyService1类文件pac...
packagecom.transsion.util;importjava.io.BufferedReader;i...
再生产wsdl文件时重写描述文件1usingSystem;2usingSystem.Co...
一般情况下,使用eclipse自带的jax-ws生成webservice会自动生...