【笔记】访问WebAPI方法封装

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;

namespace Com.AUO.SRM.Library.Public.Utility
{
    public class CallAPI
    {

        #region PostFunction
        public static string PostFunction(string postDataStr, string url)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";
            request.ContentType = "application/json";

            Stream myRequestStream = request.GetRequestStream();
            StreamWriter myStreamWriter = new StreamWriter(myRequestStream, System.Text.Encoding.UTF8);
            myStreamWriter.Write(postDataStr);
            myStreamWriter.Close();


            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, System.Text.Encoding.UTF8);
            string retString = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();

            return retString;
        }
        #endregion

        #region GetFunction
        public static string GetFunction(string url)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "GET";
            request.ContentType = "text/html;charset=UTF-8";
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
            string retString = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();

            return retString;
        }

        public static string GetFunctionAgent(string url)
        {
            WebProxy proxy = WebProxy.GetDefaultProxy(); 
             // WebProxy proxy = new WebProxy("10.5.13.39", 80);
             //proxy.Credentials = new NetworkCredential("qilinchen", "abc123!@#004");
             HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "GET";
            request.ContentType = "text/html;charset=UTF-8";
            
            request.Proxy = proxy;
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36";
            request.Accept = "text/ html, application / xhtml + xml, */*";
            request.KeepAlive = true;
            request.Headers.Add("Accept-Language", "zh-cn,en-us;q=0.5");
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
            string retString = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();

            return retString;
        }
        #endregion

        #region 异步调用Web API
        static byte[] postData = null;
        public void AsyncPostFunction(string postDataStr, string url)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";
            request.KeepAlive = true;
            request.Timeout = 300000;
            request.ContentType = "application/json";
            postData = Encoding.UTF8.GetBytes(postDataStr);
            request.BeginGetRequestStream(new AsyncCallback(RequestStreamCallBack), request);
        }

        public static void RequestStreamCallBack(IAsyncResult result)
        {
            HttpWebRequest request = (HttpWebRequest)result.AsyncState;
            Stream reqStream = request.EndGetRequestStream(result);
            reqStream.Write(postData, 0, postData.Length);
            reqStream.Close();

            request.BeginGetResponse(new AsyncCallback(ResponseCallBack), request);
        }

        public static void ResponseCallBack(IAsyncResult result)
        {
            try
            {
                HttpWebRequest req = (HttpWebRequest)result.AsyncState;
                HttpWebResponse response = (HttpWebResponse)req.EndGetResponse(result);

                using (Stream sw = response.GetResponseStream())
                {
                    using (StreamReader reader = new StreamReader(sw))
                    {
                        string xmls = reader.ReadToEnd();
                    }
                }
                if (response != null) response.Close();
            }
            catch (Exception ex)
            {
                LogHelper.Write(ex.ToString(), LogCategory.Info, System.Diagnostics.TraceEventType.Information);

            }
        }
        #endregion

        public static string XMLPostFunctionAgent(string postDataStr, string url)
        {
            WebProxy proxy = WebProxy.GetDefaultProxy();
            ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
            // WebProxy proxy =new WebProxy("10.5.13.17", 80);
            // proxy.Credentials = new NetworkCredential("qilinchen", "abc123!@#004");
            int len = postDataStr.Length;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";
            request.ContentType = "text/xml";
            request.Credentials = CredentialCache.DefaultNetworkCredentials;
            request.ContentLength = len;
            request.Proxy = proxy;
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36";
            request.Accept = "text/ html, application / xhtml + xml, */*";
            request.KeepAlive = false;
            request.Headers.Add("Accept-Language", "zh-cn,en-us;q=0.5");

            ASCIIEncoding ascii = new ASCIIEncoding();

            Stream myRequestStream = request.GetRequestStream();
            byte[] bt = ascii.GetBytes(postDataStr);
            myRequestStream.Write(bt, 0, len);
           // StreamWriter myStreamWriter = new StreamWriter(myRequestStream, System.Text.Encoding.UTF8);
           // myStreamWriter.Write(postDataStr);
          //  myStreamWriter.Close();


            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, System.Text.Encoding.UTF8);
            string retString = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();

            return retString;
        }

        public static string XMLPostFunction(string postDataStr, string url)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";
            request.ContentType = "application/xml";

            Stream myRequestStream = request.GetRequestStream();
            StreamWriter myStreamWriter = new StreamWriter(myRequestStream, System.Text.Encoding.UTF8);
            myStreamWriter.Write(postDataStr);
            myStreamWriter.Close();


            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, System.Text.Encoding.UTF8);
            string retString = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();

            return retString;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/Csongxuan/article/details/81222351