相关参考网上很多,但需要理解并转成自己的情况

 public static string HttpWebRequestPost(string url, string param)
{
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
Encoding encoding = Encoding.UTF8;
byte[] byteArray = Encoding.ASCII.GetBytes(param);
string responseData = String.Empty;
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = byteArray.Length; using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(byteArray, , byteArray.Length);
}
using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
{
responseData = reader.ReadToEnd();
}
return responseData;
}
}

1.第1行param:需要发送的POST参数,需要和对应接收端约定好相应的格式,如本实例为 random=abc&check=faa5bff8a65e359ea863ca1e ,查参考代码时在stackoverflow.com上看到POST要传送到数据格式是这样的 string data = "{\"service\":\"absence.list\", \"company_id\":3}";

2.第5行是注意点需要将发送到数据转成byte[],这里有一个坑,需要使用对应Encoding工具,推测也是和接收请求的服务端相对应的,这里使用了Encoding.ASCII.GetBytes(param);参考代码中大多是使用了UTF8Encoding对象的.GetBytes(data)方法.

相关参考:获取UTF8Encoding对象两种coding

UTF8Encoding enc = new UTF8Encoding(); byte[] buf = enc.GetBytes(data);
//方式二
byte[] buf = System.Text.Encoding.GetEncoding("utf-8").GetBytes(RequestPara);

3.第8行需要根据实际情况调整,其它参考值xxx.ContentType = "application/json; charset=UTF-8";

4.11至15行HttpWebRequest发送POST请求的必须套路,即将发送参数写入输出流,看到不少大同小异的编程风格

5. 第16行req.GetResponse()核心方法,将请求真正发送出去,然后从响应流中读取数据

附GET请求

public string HttpWebRequestGet(string url, string param)
{
param = param.IndexOf('?') > - ? (param) : ("?" + param); HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url + param);
Encoding encoding = Encoding.UTF8;
string responseData = String.Empty;
req.Method = "GET";
using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
{
responseData = reader.ReadToEnd();
}
return responseData;
}
}

end

HttpWebRequest(System.Net)模拟HTTP发送POST的更多相关文章

  1. js_html_input中autocomplete="off"在chrom中失效的解决办法 使用JS模拟锚点跳转 js如何获取url参数 C#模拟httpwebrequest请求_向服务器模拟cookie发送 实习期学到的技术(一) LinqPad的变量比较功能 ASP.NET EF 使用LinqPad 快速学习Linq

    js_html_input中autocomplete="off"在chrom中失效的解决办法 分享网上的2种办法: 1-可以在不需要默认填写的input框中设置 autocompl ...

  2. 使用HttpClient配置代理服务器模拟浏览器发送请求调用接口测试

    在调用公司的某个接口时,直接通过浏览器配置代理服务器可以请求到如下数据: 请求url地址:http://wwwnei.xuebusi.com/rd-interface/getsales.jsp?cid ...

  3. 使用java程序模拟页面发送http的post请求

    在web应用程序中,一般都是通过页面发送http的post请求,但也可以使用java程序来模拟页面发送请求,代码如下: import java.io.BufferedReader; import ja ...

  4. 使用appium模拟用户发送短信

    一段简单粗糙的代码.主要是实现的功能是模拟用户发送短信的功能. python版本3.5.2 appium版本1.4.16.1 from appium import webdriver desired_ ...

  5. C# 利用 HttpWebRequest 和 HttpWebResponse 模拟登录有验证码的网站

    原文:C# 利用 HttpWebRequest 和 HttpWebResponse 模拟登录有验证码的网站 我们经常会碰到需要程序模拟登录一个网站,那如果网站需要填写验证码的要怎样模拟登录呢?这篇文章 ...

  6. php使用curl模拟多线程发送请求

    每个PHP文件的执行是单线程的,但是php本身也可以用一些别的技术实现多线程并发比如用php-fpm进程,这里用curl模拟多线程发送请求.php的curl多线程是通过不断调用curl_multi_e ...

  7. Telnet 模拟邮件发送过程

    Telnet 模拟邮件发送过程 windows要提前开启Telnet客户端的功能,再按照下面步骤完成邮件发送: 1.通过 cmd 进入命令窗口 2.连接要发送邮件的服务器:telnet smtp.al ...

  8. Jmeter 使用技巧 (如何在linux下运行jmeter视窗界面呢)-jmeter如何模拟http发送gzip数据

    jmeter如何模拟http发送gzip数据 有时候我们需要模拟在客户端将数据压缩后, 发送(post)到服务器端. 通常这种情况,会发生在移动终端上. 这样做的好处, 是可以节省流量.  当然, 服 ...

  9. C#模拟httpwebrequest请求_向服务器模拟cookie发送

    使用C#代码模拟web请求,是一种常用的方法,以前没专门整理过,这里暂时贴上自己整理的完整代码,以后再做梳理: public class MyRequest { #region 辅助方法 public ...

随机推荐

  1. 获取lable选中时触发事件

    通常做网页时不会用radio和checkbox的原有样式, 会进行样式美化. 如何在点击checkbox时触发一个事件呢? <div class="main-checkbox" ...

  2. Android MVP模式简单易懂的介绍方式 (二)

    Android MVP模式简单易懂的介绍方式 (一) Android MVP模式简单易懂的介绍方式 (二) Android MVP模式简单易懂的介绍方式 (三) 上一篇文章我们介绍完了Model的创建 ...

  3. UNITY所谓的异步加载几乎全部是协程,不是线程;MAP3加载时解压非常慢

    实践证明,以下东西都是协程,并非线程(thread): 1,WWW 2,AssetBundle.LoadFromFileAsync 3,LoadSceneAsync 其它未经测试 此问题的提出是由于一 ...

  4. /etc/rc5.d/s991local: line25: eject:command not found错误

      使用虚拟机安装centos出现错误,原因是我使用的镜像是最小级别的,没有图形化界面,只有终端窗口 有人用vmware安装minimal centos报错/etc/rc5.d/s99local : ...

  5. Elasticsearch全文检索,高亮关键字

    问题 用如下这样的term方式,可以高亮 .setQuery(QueryBuilders.termQuery("PARAM_NAME", "a")) { &qu ...

  6. 用jQuery获取table中行id和td值

    <%@ page language="java" pageEncoding="UTF-8"%> <% String path = reques ...

  7. pyinstaller 打包

    [root@mhc nsf]# pip install pyinstallerCollecting pyinstaller  Downloading PyInstaller-3.3.tar.gz (3 ...

  8. Flying Right POJ - 3038

    有一条从南到北的航线,航线上有N个机场1-n从南到北分布,每天早上飞机从1飞到n,傍晚从n飞到1.有k组乘客,他们数量为M[k],从S飞到E,飞机上只有C个座位,计算每天飞机最多能拉多少乘客 贪心可以 ...

  9. 新做的系统,第一次拉maven项目时,鼠标左键+ctrl键不能进方法

    对项目选择属性,跳转至:选择以下步骤

  10. C#中接口声明属性,但是提示“接口”中不能有属性。

    C#中接口定义属性如下所示: using System; using System.Collections.Generic; using System.Linq; using System.Text; ...