模拟远程HTTP的POST请求
建立请求,以模拟远程HTTP的POST请求方式构造并获取处理结果
- /// <summary>
- /// 建立请求,以模拟远程HTTP的POST请求方式构造并获取处理结果
- /// </summary>
- /// <param name="sParaTemp">请求参数数组</param>
- /// <returns>处理结果</returns>
- public string BuildRequest(Dictionary<string, string> sParaTemp,string url,string input_chartset)
- {
- Encoding code = Encoding.GetEncoding(input_chartset);
- //待请求参数数组字符串
- string strRequestData = BuildRequestParaToString(sParaTemp, code);
- //把数组转换成流中所需字节数组类型
- byte[] bytesRequestData = code.GetBytes(strRequestData);
- //构造请求地址
- string strUrl = url;
- //请求远程HTTP
- string strResult = "";
- try
- {
- //设置HttpWebRequest基本信息
- HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(strUrl);
- myReq.Method = "post";
- myReq.ContentType = "application/x-www-form-urlencoded";
- //填充POST数据
- myReq.ContentLength = bytesRequestData.Length;
- Stream requestStream = myReq.GetRequestStream();
- requestStream.Write(bytesRequestData, , bytesRequestData.Length);
- requestStream.Close();
- //发送POST数据请求服务器
- HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();
- Stream myStream = HttpWResp.GetResponseStream();
- //获取服务器返回信息
- StreamReader reader = new StreamReader(myStream, code);
- StringBuilder responseData = new StringBuilder();
- String line;
- while ((line = reader.ReadLine()) != null)
- {
- responseData.Append(line);
- }
- //释放
- myStream.Close();
- strResult = responseData.ToString();
- }
- catch (Exception exp)
- {
- strResult = "报错:" + exp.Message;
- }
- return strResult;
- }
- /// <summary>
- /// 生成要请求的参数数组
- /// </summary>
- /// <param name="sParaTemp">请求前的参数数组</param>
- /// <param name="code">字符编码</param>
- /// <returns>要请求的参数数组字符串</returns>
- private string BuildRequestParaToString(Dictionary<string, string> sParaTemp, Encoding code)
- {
- //把参数组中所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对参数值做urlencode
- string strRequestData = CreateLinkStringUrlencode(sParaTemp, code);
- return strRequestData;
- }
- /// <summary>
- /// 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对参数值做urlencode
- /// </summary>
- /// <param name="sArray">需要拼接的数组</param>
- /// <param name="code">字符编码</param>
- /// <returns>拼接完成以后的字符串</returns>
- private string CreateLinkStringUrlencode(Dictionary<string, string> dicArray, Encoding code)
- {
- StringBuilder prestr = new StringBuilder();
- foreach (KeyValuePair<string, string> temp in dicArray)
- {
- prestr.Append(temp.Key + "=" + HttpUtility.UrlEncode(temp.Value, code) + "&");
- }
- //去掉最後一個&字符
- int nLen = prestr.Length;
- prestr.Remove(nLen - , );
- return prestr.ToString();
- }
调用
- /// <summary>
- /// 查询电子邮件状态
- /// </summary>
- /// <returns></returns>
- [HttpPost]
- public ActionResult QueryEmailStatus()
- {
- string responseText = string.Empty;
- try
- {
- #region 调用查询电子邮件状态接口
- string url = "http://localhost/WebAPI/status.aspx";
- string input_chartset="utf-8";
- //构造参数
- Dictionary<string, string> sParaTemp = new Dictionary<string, string>();
- sParaTemp.Add("ManagerLoginName", "XXXXXXX");//API帳號
- sParaTemp.Add("ManagerPassword", "XXXXXXX");//API密碼
- sParaTemp.Add("JobType", "");//1:簡訊 2:電子郵件
- sParaTemp.Add("LaunchID", "");//任務編號
- sParaTemp.Add("EmailAddress", "394401333@qq.com");//查詢的對象(收件者信箱)
- //提交请求,获得返回结果
- responseText = BuildRequest(sParaTemp, url, input_chartset);
- #endregion
- }
- catch (Exception ex)
- {
- throw ex;
- //Log.Error(this.GetType().ToString(), "Exception: " + ex.Message);
- }
- return RedirectToAction("Index", "Demo");
- }
模拟远程HTTP的POST请求的更多相关文章
- nodejs向远程服务器发送post请求----融云Web SDK/客户端获取token
最近要用到一个叫融云的及时通讯的SDK,在获取token这个步骤的时候有点卡顿,以防以后碰到类似的问题,再此记录一下. 客户端通过融云 SDK 每次连接服务器时,都需要向服务器提供 Token,以便验 ...
- 使用PHP Socket 编程模拟Http post和get请求
这里给大家分享一段使用PHP Socket 编程模拟Http post和get请求的代码,非常的实用,结尾部分我们再讨论下php模拟http请求的几种方法. <?php /** * 使用PHP ...
- php模拟发送GET和POST请求
php分别模拟发送GET和POST请求,非常实用的额,也可作PHP CURL入门级的理解教材的,示例代码如下: <?php /* ** php分别模拟发送GET与POST请求 ** */ fun ...
- LoadRunner模拟REST接口的json请求
LoadRunner模拟REST接口的json请求 现在很多手机应用的性能测试,REST接口调用通过json格式,在用loadrunner模拟这些json请求时,需要开发提供 1.供接口地址 2.提交 ...
- java中如何模拟真正的同时并发请求?
有时需要测试一下某个功能的并发性能,又不要想借助于其他工具,索性就自己的开发语言,来一个并发请求就最方便了. java中模拟并发请求,自然是很方便的,只要多开几个线程,发起请求就好了.但是,这种请求, ...
- java模拟http的Get/Post请求,并设置ip与port代理
本文涉及3个基本点: 1.因为很多公司的内网都设有代理,浏览器通过ip与port上网,而java代码模拟http get方式同样需要外网代理: 2.Java实现http的Get/Post请求代码: 3 ...
- 使用HttpRequester模拟发送及接收Json请求
1.开发人员在火狐浏览器里经常使用的工具有Firebug,httprequester,restclient......火狐浏览器有一些强大的插件供开发人员使用!需要的可以在附加组件中扩展. 2.htt ...
- Winform模拟post请求和get请求登录网站
引言 最近有朋友问如何用winform模拟post请求,然后登录网站,稍微想了一下,大致就是对http报文的相关信息的封装,然后请求网站登录地址的样子.发现自己的博客中对这部分只是也没总结,就借着这股 ...
- 如何用ASP.NET实现bosh模拟http双向长连接请求
在做研究之前先简单说一下之前公司的通讯模块.最早的时候公司开发的web管理系统是需要配合c++桌面客户端进行一些系统底层操作,并非普通的b/s架构,或者c/s架构,因为需求是可以通过web管理系统向客 ...
随机推荐
- jvectormap地图开发和制作任意国家地图
jvectormap官网上提供了世界地图和很多国家的地图,但不是所有国家的地图都有,比如沙特阿拉伯的国家地图就没有,怎么办呢? 在http://www.amcharts.com/svg-maps/上下 ...
- Linux常用命令之-grep
简介 grep全称Global Regular Expression Print是一种强大的文本搜索工具,它能使用给定的正则表达式按行搜索文本输出,文件,目录等,统计并输出匹配的信息,grep在文本查 ...
- 关于eclipse open call hierarchy功能的一个细节
这个功能对应的快捷键是ctrl alt H,大家应该都很熟悉了.默认是查找这个方法的被调用堆栈.90%的人应该也是习惯这个默认的功能的,也基本无视它的另一个功能. 昨天重启eclipe之后,我的ecl ...
- 可视化库-Matplotlib-Pandas与sklearn结合(第四天)
1. 计算每一种的比例的百分比 import pandas as pd from matplotlib.ticker import FuncFormatter np.random.seed(0) df ...
- Spring Boot实践——多线程
多线程 Spring通过任务执行器(TaskExecutor)来实现多线程和并发编程.使用ThreadPoolTaskExecutor可实现一个基于线程池的TaskExecutor.而实际开发中任务一 ...
- vs启动项目提示Web 服务器被配置为不列出此目录的内容。
解决方法 确认网站或应用程序配置文件中的 configuration/system.webServer/directoryBrowse@enabled 属性已设置为 true. 配置一下web.con ...
- LevelDb日知录之五:MemTable详解
[LevelDb日知录之五:MemTable详解] LevelDb日知录前述小节大致讲述了磁盘文件相关的重要静态结构,本小节讲述内存中的数据结构Memtable,Memtable在整个体系中的重要地位 ...
- String对象不可改变的特性及内存机制
JAVA中字符串类型String是不允许改变其内容的,下列语句是如何运行的:String s=new String("ABCD");s=s+"123": 最佳回 ...
- bootstraptable为行中的按钮添加事件
- hive分隔符总结
ascii对应的表Char Dec Oct Hex | Char Dec Oct Hex | Char Dec Oct Hex | Char Dec Oct Hex ----------------- ...