注意的是,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;
}

Winform Post请求传递Json格式参数的写法的更多相关文章

  1. Springmvc 的post请求的json格式参数

    背景: 这两天在项目中遇到了一个问题.我的环境是springmvc4.1.9,写了几个可以用ajax请求的接口(ajax.jsonp 调用正常).突然一时兴起就用 HTTP 请求的工具(比如火狐浏览器 ...

  2. get请求传递json格式数据的两种方法

    get请求参数为json格式数据,使用pyhton+request的两种实现方式如下: 方法一:使用requests.request() 示例代码如下: 1.导入requests和json impor ...

  3. java 后台实现ajax post跨域请求传递json格式数据获取json数据问题

    参考大神:http://blog.csdn.net/chunqiuwei/article/details/19924821 java后台: public String ajaxProxy(Intege ...

  4. SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析

    SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析 一:问题demo展示 ...

  5. JAVA发送POST请求携带JSON格式字符串参数

    import org.apache.commons.lang.StringUtils; import org.apache.http.HttpEntity; import org.apache.htt ...

  6. 使用jQuery发送POST,Ajax请求返回JSON格式数据

    问题: 使用jQuery POST提交数据到PHP文件, PHP返回的json_encode后的数组数据,但jQuery接收到的数据不能解析为JSON对象,而是字符串{"code" ...

  7. java web 服务器端处理json格式参数

    前面我们说了传递参数的两种访书,第一是key-value形式,第二是json格式,对于第一种我们在服务器端直接使用 request.getParameter("key");就能获取 ...

  8. springmvc通过ajax异步请求返回json格式数据

    jsp 首先创建index.jsp页面 <script type="text/javascript"> $(function () { $("#usernam ...

  9. 模拟一个http 请求的json格式报文,带 rsa 签名操作

    一.对需要加密的字符串,定义RsaSignUnsign 类,代码如下: 实现了: 1.实现了生成新的pubkey.pri_key方法: 2.将新生成的keys 写入文件: 3.从文件获取pubkey. ...

随机推荐

  1. 51nod 1393:0和1相等串

    1393 0和1相等串 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 给定一个0-1串,请找到一个尽可能长的子串,其中包含的0与1的个数相等. I ...

  2. openstack trove主要贡献公司-Tesora被Stratoscale收购

    新闻链接:http://www.stratoscale.com/press/press-releases/stratoscale-acquires-database-as-a-service-prov ...

  3. MySQL的DDL和DML

    SQL语句:结构化查询语句,使用SQL与数据库“沟通”,完成相应的数据库操作. 语句分类 DDL(Data Definition Languages)语句:即数据库定义语句,用来创建数据库中的表.索引 ...

  4. JavaScript之HTML DOM Event

    当鼠标在button上点击时,会在button上触发一个click事件.但是button是div的一个子元素, 在button里点击相当于在div里点击,是否click事件也会触发在div上?如果cl ...

  5. PHP 框架: CodeIgniter 分页教程

    PHP 框架: CodeIgniter 分页教程 分类: PHP2009-04-23 11:09 3209人阅读 评论(0) 收藏 举报 框架phpbooksdatabaseurl数据库 目录(?)[ ...

  6. Vue动画封装

    <head> <meta charset="UTF-8"> <title>Title</title> <script src= ...

  7. JavaScript学习总结(八)

    这一节结束,我们的JavaScript学习总结系列文章第一阶段就要结束了,今后会适当的补充一些高级的内容,敬请期待. 好了,废话不说进入这一节的学习. 联动框 联动框,实在是太常见了.比如淘宝,我们选 ...

  8. 18. docker 容器部署 python-redis

    1. 编写 Vagrantfile 并创建虚拟机 并虚拟机绑定外部 192.168.205.10:8888 ip:port # -*- mode: ruby -*- # vi: set ft=ruby ...

  9. str_replace用法

    语法 str_replace(find,replace,string,count) 参数 描述 find 必需.规定要查找的值. replace 必需.规定替换 find 中的值的值. string ...

  10. [Algo] 131. Deep Copy Linked List With Random Pointer

    Each of the nodes in the linked list has another pointer pointing to a random node in the list or nu ...