• HTTP请求


    public static string DoPost(string url, IDictionary<string, string> parameters)
    {
    HttpWebRequest req = GetWebRequest(url, "POST");
    req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";

    byte[] postData = Encoding.UTF8.GetBytes(BuildQuery(parameters));
    Stream reqStream = req.GetRequestStream();
    reqStream.Write(postData, 0, postData.Length);
    reqStream.Close();

    HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();
    Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);
    return GetResponseAsString(rsp, encoding);
    }

    public static HttpWebRequest GetWebRequest(string url, string method)
    {
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
    req.ServicePoint.Expect100Continue = false;
    req.Method = method;
    req.KeepAlive = true;
    req.UserAgent = "Top4Net";
    req.Timeout = 1000 * 100;
    return req;
    }
    /// <summary>
    /// 把响应流转换为文本。
    /// </summary>
    /// <param name="rsp">响应流对象</param>
    /// <param name="encoding">编码方式</param>
    /// <returns>响应文本</returns>
    public static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding)
    {
    Stream stream = null;
    StreamReader reader = null;

    try
    {
    // 以字符流的方式读取HTTP响应
    stream = rsp.GetResponseStream();
    reader = new StreamReader(stream, encoding);
    return reader.ReadToEnd();
    }
    finally
    {
    // 释放资源
    if (reader != null) reader.Close();
    if (stream != null) stream.Close();
    if (rsp != null) rsp.Close();
    }
    }

    /// <summary>
    /// 组装普通文本请求参数。
    /// </summary>
    /// <param name="parameters">Key-Value形式请求参数字典</param>
    /// <returns>URL编码后的请求数据</returns>
    public static string BuildQuery(IDictionary<string, string> parameters)
    {
    StringBuilder postData = new StringBuilder();
    bool hasParam = false;

    IEnumerator<KeyValuePair<string, string>> dem = parameters.GetEnumerator();
    while (dem.MoveNext())
    {
    string name = dem.Current.Key;
    string value = dem.Current.Value;
    // 忽略参数名或参数值为空的参数
    if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(value))
    {
    if (hasParam)
    {
    postData.Append("&");
    }

    postData.Append(name);
    postData.Append("=");
    postData.Append(Uri.EscapeDataString(value));
    hasParam = true;
    }
    }
    return postData.ToString();
    }

  • 相关阅读:
    Android深度探索第一章读书笔记
    ocRuntime基本功
    关于堆栈和block之我见
    OC 与 swift 混编杂记
    UItableViewCell自适应高度的坑
    windows蓝屏处理
    MBProgressHUD自定义customView
    svn 配置忽略文件
    ios 开发项目常用第三方库:
    cocoaPod 更换镜像源
  • 原文地址:https://www.cnblogs.com/xiguanjiandan/p/2729514.html
Copyright © 2020-2023  润新知