模拟远程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管理系统向客 ...
随机推荐
- CentOS下查看最后登录的用户信息以及LOG记录
CentOS下查看最后登录的用户信息tail /var/log/messagestail /var/log/secure 我们知道,在redhat下可以用lastlog查看各用户最后登录的信息,用la ...
- py基础3--函数,递归,内置函数
本节内容 函数基本语法及特性 参数与局部变量 返回值 嵌套函数 递归 匿名函数 函数式编程介绍 高阶函数 内置函数 1. 函数基本语法及特性 背景提要 现在老板让你写一个监控程序,监控服务器的系统状况 ...
- mysql统计一个库里面的表的总数
SELECT COUNT(TABLE_NAME) FROM information_schema.tables WHERE TABLE_SCHEMA = 'weixin_platform' weixi ...
- Gitlab 社区版安装部署和维护指南
因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.这篇文章是在 Gitlab 7.4 的环境下配置的,相关内容可能已经过时. 后续做了一次迁移,将 Gitlab 升级到了 ...
- 删除.svn 文件
新建一个delete_svn.bat文件 @echo on color 2f mode con: cols= lines= @REM @echo 正在清理SVN文件,请稍候...... @rem 循环 ...
- C++ 获取特定进程的CPU使用率<转>
C++ 获取特定进程的CPU使用率 近来发现笔记本在关闭屏幕后风扇转得特别快,打开屏幕后看任务管理器,风扇马上减速,也没有发现大量占用CPU的进程.于是想写一个小程序在后台记录每个进程的CPU使用情况 ...
- ICaptureGraphBuilder2::RenderStream 智能连接方法浅析
ICaptureGraphBuilder2::RenderStream HRESULT RenderStream( [in] const GUID *pCategory, [in] const GUI ...
- aria2自动更新BT Tracker服务器列表脚本
vi /root/trackers-list-aria2.sh 内容如下: #!/bin/bash #/usr/sbin/service aria2 stop list=`wget -qO- http ...
- 值类型 struct
由于值类型存在装箱和拆箱的过程,所有导致在修改值类型对象内部数据时,有可能会出现一些与预想不同的结果. 比如 Point p = , ); Console.WriteLine(p); p.Change ...
- Website蝴蝶结构
[Website蝴蝶结构] 网页的其正向链接连结在一起表现为一种蝴蝶结结构. 1.蝴蝶结中部(SCC, Strongly Connected Componnet) 这种网页彼此相连. 2.蝴蝶结左部( ...