HttpHelper.cs 3.1 KB
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Collections;
using System.Net;
using System.Net.Security;
using System.Security;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Reflection;
using log4net;

namespace OnlineStore.Common
{
    public class HttpHelper
    {
        public static readonly ILog LOGGER = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
        public static string Post(string url, string paramData)
        {
            return Post(url, paramData, Encoding.UTF8);
        }
        private static int isLog = ConfigAppSettings.GetIntValue(Setting_Init.Server_Log_Open); 
        public static string Post(string url, string paramData, Encoding encoding)
        {
            if (isLog == 1)
            {
                LOGGER.Info("给服务器发送数据【" + paramData + "】 ");
            }
            if (paramData != "null" && paramData != null)
            {
                //   LogUtil.debug(LOGGER,  "HTTP POST to " + url + " \n\t >> " + paramData);
            }
            string result = "";

            if (url.ToLower().IndexOf("https", System.StringComparison.Ordinal) > -1)
            {
                ServicePointManager.ServerCertificateValidationCallback =
                               new RemoteCertificateValidationCallback((sender, certificate, chain, errors) => { return true; });
            }

            try
            {
                var wc = new MyWebClient(5000);
                if (string.IsNullOrEmpty(wc.Headers["Content-Type"]))
                    wc.Headers.Add("Content-Type", "application/json;charset=UTF-8");
                wc.Encoding = encoding;

                result = wc.UploadString(url, "POST", paramData);
                //LogUtil.info(result);
            }
            catch (Exception e)
            {
                LogUtil.error( "POST ERROR:" + e.StackTrace, 1001);
            }
            if (!result.Contains("null") && result.Length != 0)
            {
                //LogUtil.debug(LOGGER,"receive << " + result);
            }
            if (isLog == 1)
            {
                LOGGER.Info("收到服务器数据【" + result + "】");
            }
            return result;
        }

        public static string Get(string url)
        {
            return Get(url, Encoding.UTF8);
        }

        public static string Get(string url, Encoding encoding)
        {
            try
            {
                LogUtil.info(LOGGER, "HTTP GET FROM: " + url);
                var wc = new WebClient { Encoding = encoding };
                var readStream = wc.OpenRead(url);
                using (var sr = new StreamReader(readStream, encoding))
                {
                    var result = sr.ReadToEnd();
                    LogUtil.info(LOGGER, "receive << " + result);
                    return result;
                }
            }
            catch (Exception e)
            {
                LogUtil.error( "HTTP GET ERROR:" + e.Message, 1002);
            }
            return "";
        }
    }
}