zoukankan      html  css  js  c++  java
  • 接口请求

    /// <summary>
    /// 字符编码
    /// </summary>
    private readonly Encoding _DefaultEncoding = Encoding.UTF8;

    string json = JsonHelper.ObjectToJson(requestData, true);
    byte[] body = _DefaultEncoding.GetBytes(json);

    //创建http请求 要访问的url地址
    string requsetUrl = apiUrl + url;

    //创建http请求
    HttpWebRequest webRequest = CreateHttpWebRequest(requsetUrl);
    webRequest.Method = "POST";
    webRequest.Accept = "text/plain, application/json, application/*+json, */*";
    webRequest.ContentType = "application/json; charset=utf-8";
    webRequest.ContentLength = body.Length;
    webRequest.Headers.Add("token", requestData.token);
    using (Stream reqStream = webRequest.GetRequestStream())
    {
    reqStream.Write(body, 0, body.Length);
    }

    HttpWebResponse webResponse;
    try
    {
    webRequest.Timeout = 300000;
    //获取响应
    webResponse = (HttpWebResponse)webRequest.GetResponse();
    }
    catch (WebException ex)
    {
    webResponse = (HttpWebResponse)ex.Response;
    }

    Stream responseStream = webResponse.GetResponseStream();
    if (webResponse.ContentEncoding.ToLower().Contains("gzip"))
    {
    //gzip格式
    responseStream = new GZipStream(responseStream, CompressionMode.Decompress);
    }
    string responseString = "";
    using (StreamReader reader = new StreamReader(responseStream, Encoding.UTF8))
    {
    responseString = reader.ReadToEnd();
    }
    if (responseString != null && responseString.Length > 0)
    {
    try
    {
    GetDeductionRequestIdResponse response = JsonHelper.JsonToObject<GetDeductionRequestIdResponse>(responseString);

    //返回值

    return response;
    }
    catch (Exception e)
    {
    throw new Exception("调用接口错误,没有返回值");
    }
    }
    else
    {
    throw new Exception("调用接口错误,没有返回值");
    }

    /// <summary>
    /// 创建请求
    /// </summary>
    /// <param name="url">地址</param>
    /// <returns></returns>
    private static HttpWebRequest CreateHttpWebRequest(string url)
    {
    HttpWebRequest request;
    //如果是发送HTTPS请求
    if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
    {
    //ServicePointManager.DefaultConnectionLimit = 1000;
    ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
    request = WebRequest.Create(url) as HttpWebRequest;
    request.ProtocolVersion = HttpVersion.Version11;
    }
    else
    {
    request = WebRequest.Create(url) as HttpWebRequest;
    }
    request.Proxy = null;
    request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");//若支持压缩 注意需要给在获取响应时解压
    return request;
    }

    /// <summary>
    /// https 校验证书
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="certificate"></param>
    /// <param name="chain"></param>
    /// <param name="errors"></param>
    /// <returns></returns>
    private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
    {
    //todo 验证对方证书
    return true; //总是接受
    }

    /// <summary>
    /// 对象转json
    /// </summary>
    /// <param name="obj"></param>
    /// <param name="ignoreNull">忽略null值</param>
    /// <returns></returns>
    public static string ObjectToJson(object obj, bool ignoreNull = false)
    {
    //时间类型格式化
    NullValueHandling nullValueHandling = NullValueHandling.Include;
    if (ignoreNull == true)
    {
    nullValueHandling = NullValueHandling.Ignore;//忽略值为null的项
    }
    var jSetting = new JsonSerializerSettings { NullValueHandling = nullValueHandling };
    IsoDateTimeConverter dtConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss", };
    jSetting.Converters.Add(dtConverter);
    string json = JsonConvert.SerializeObject(obj, Formatting.Indented, jSetting);

    //排序
    var a = JObject.Parse(json);
    var target = KeySort(a);

    //去掉decimal 末尾 .0
    JsonSerializerSettings s1 = new JsonSerializerSettings();
    s1.Converters.Add(new DemoJson());
    json = JsonConvert.SerializeObject(target, null, s1);

    return json;
    }

  • 相关阅读:
    MFC中CTREECTRL的checkbox问题
    GLOG的使用说明
    安装Electron
    WIN32中DLL的建立
    MFC动态创建菜单
    C++迭代器
    VIM常用命令
    层次遍历二叉树
    sql存储过程中加引号
    Apache Tomcat 绿色版安装Service(服务)
  • 原文地址:https://www.cnblogs.com/luoxiaoxiao102/p/14822977.html
Copyright © 2011-2022 走看看