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

  • 相关阅读:
    BNUOJ 12756 Social Holidaying(二分匹配)
    HDU 1114 Piggy-Bank(完全背包)
    HDU 2844 Coins (多重背包)
    HDU 2602 Bone Collector(01背包)
    HDU 1171 Big Event in HDU(01背包)
    HDU 2571 命运 (入门dp)
    HDU 1069 Monkey and Banana(最长递减子序列)
    HDU 1160 FatMouse's Speed (最长上升子序列)
    HDU 2594 KMP
    POJ 3783 Balls --扔鸡蛋问题 经典DP
  • 原文地址:https://www.cnblogs.com/luoxiaoxiao102/p/14822977.html
Copyright © 2011-2022 走看看