请求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;
    }
}

调用方式:

class Program
{
    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();
    }
}

猜你喜欢

转载自www.cnblogs.com/wsq-blog/p/10662154.html