zoukankan      html  css  js  c++  java
  • Winform Post请求传递Json格式参数的写法

    注意的是,Json传递需用到Hashtable(哈希表)来添加参数,本人也试过用JObject添加页不行,感觉应该可以的不知道怎么回事,直接上代码,

    Hashtable ht = new Hashtable();
    ht.Add("agentCode", agentcode);
    ht.Add("agentPassword", agentpwd);
    ht.Add("body", body);

    HttpRequest.DoPost(registerUrl, ht);  //HttpRequest是自定义的一个类

    /// <summary> WebService:Post调用
    /// </summary>
    /// <param name="url">Webservice地址</param>
    /// <param name="paramsOfUrl">传入数据</param>
    /// <returns>返回结果</returns>
    public static string DoPost(string url, Hashtable paramsOfUrl)
    {
    if (url == null)
    {
    throw new Exception("WebService地址为空");
    }
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);

    // 编辑并Encoding提交的数据
    byte[] data = GetJointBOfParams(paramsOfUrl);

    // 发送请求
    request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";
    request.ContentLength = data.Length;
    Stream stream = request.GetRequestStream();
    stream.Write(data, 0, data.Length);
    stream.Close();

    // 获得回复
    System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
    StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
    string result = reader.ReadToEnd();
    reader.Close();
    return result;
    }

    /// <summary> 拼接参数串----Get
    /// </summary>
    /// <param name="paramsOfUrl">参数项</param>
    /// <returns>返回字符串</returns>
    private static String GetJointSOfParams(Hashtable paramsOfUrl)
    {
    if (paramsOfUrl == null || paramsOfUrl.Count == 0) return String.Empty;
    // 编辑并Encoding提交的数据
    StringBuilder sbuilder = new StringBuilder();
    int i = 0;
    foreach (DictionaryEntry de in paramsOfUrl)
    {
    string value = ToHttpChar(de.Value.ToString());
    if (i == 0)
    {
    sbuilder.Append(de.Key + "=" + value);
    }
    else
    {
    sbuilder.Append("&" + de.Key + "=" + value);
    }
    i++;
    }
    return sbuilder.ToString();
    }

    /// <summary> 拼接参数串----Post
    /// </summary>
    /// <param name="paramsOfUrl">参数项</param>
    /// <returns>返回字节数组</returns>
    private static byte[] GetJointBOfParams(Hashtable paramsOfUrl)
    {
    // 编辑并Encoding提交的数据
    String stringJointOfParams = GetJointSOfParams(paramsOfUrl);
    byte[] data = new ASCIIEncoding().GetBytes(stringJointOfParams);
    return data;
    }

    /// <summary> 转义特殊字符
    /// </summary>
    private static string ToHttpChar(string value)
    {
    value = value.ToString().Replace("+", "%2B");
    //value = value.ToString().Replace(" ", "%20");
    //value = value.ToString().Replace("/", "%2F");
    //value = value.ToString().Replace("?", "%3F");
    //value = value.ToString().Replace("%", "%25");
    //value = value.ToString().Replace("#", "%23");
    //value = value.ToString().Replace("&", "%26");
    //value = value.ToString().Replace("=", "%3D");
    //value = value.ToString().Replace(@"", "%5C");
    //value = value.ToString().Replace(".", "%2E");
    //value = value.ToString().Replace(":", "%3A");
    return value;
    }

  • 相关阅读:
    七类网线 支持10gb/s的速度的计算方法
    Linux 压缩 解压缩 命令相关
    [至顶网] Win2019 发布 LTSC 10年支持期
    安装报错信息 改天找人帮忙看下.
    [学习]仿照cnblog 搭建 Oracle RAC 双节点 困.. 后续做不下去了..
    Windows 作为 openssl server端时的处理
    阿里云构建Kafka单机集群环境
    nginx解决跨域
    让网站永久拥有HTTPS
    ORA-01940: cannot drop a user that is currently connected 问题解析
  • 原文地址:https://www.cnblogs.com/dachuang/p/9491876.html
Copyright © 2011-2022 走看看