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

  • 相关阅读:
    javascript:void(0)是什么意思 天高地厚
    C#开发 WinForm中窗体显示和窗体传值相关知识
    c#在WinForm中重写ProgressBar控件(带%的显示)
    flash在C#中的应用
    c# winform 关于DataGridView的一些操作
    winform中输入数据的验证
    RadioButton和CheckBox
    Manifest文件的配置
    简单程序用于熟悉Activity生命周期
    Activity的生命周期
  • 原文地址:https://www.cnblogs.com/dachuang/p/9491876.html
Copyright © 2011-2022 走看看