当前位置: 首页 > news >正文

HttpWebRequest(System.Net)模拟HTTP发送POST

HttpWebRequest(System.Net)模拟HTTP发送POST

https://www.cnblogs.com/zhuji/p/9335355.html

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

复制代码

 1 public static string HttpWebRequestPost(string url, string param)
 2 {
 3     HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
 4     Encoding encoding = Encoding.UTF8;
 5     byte[] byteArray = Encoding.ASCII.GetBytes(param);
 6     string responseData = String.Empty;
 7     req.Method = "POST";
 8     req.ContentType = "application/x-www-form-urlencoded";
 9     req.ContentLength = byteArray.Length;
10 
11     using (Stream reqStream = req.GetRequestStream())
12     {
13         reqStream.Write(byteArray, 0, byteArray.Length);
15     }
16     using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())
17     {
18         using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
19         {
20             responseData = reader.ReadToEnd();
21         }
22         return responseData;
23     }
24 }

复制代码

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('?') > -1 ? (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

 

 

 

相关文章:

  • C#中用HttpWebRequest中发送GET/HTTP/HTTPS请求 (转载)
  • System.Net.HttpWebRequest.GetRequestStream超时问题
  • System.Net.HttpWebRequest.GetResponse() 远程服务器
  • 【转载】HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法
  • UE4 AIController
  • [UE4]创建自定义AIController的方法(C++)
  • eclipse + pydev远程调试OpenStack
  • 调用shell jenkins不能自动结束
  • Unreal 第三方 Python平台
  • 【UE4_C++】<14-3>用户界面 UI和UMG——为UI创建屏幕尺寸自适应缩放
  • 虚幻4DPI自适应缩放规则解析
  • Eclipse中打开windows资源管理器或打开文件夹的设置!(实例)
  • 在Eclipse中快速定位当前文件所在位置
  • AssetBundle详解与优化
  • 苹果电脑远程管理/屏幕共享的客方设置
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 10个确保微服务与容器安全的最佳实践
  • Mysql数据库的条件查询语句
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • React-flux杂记
  • Redis的resp协议
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 回顾2016
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 微信公众号开发小记——5.python微信红包
  • 问题之ssh中Host key verification failed的解决
  • 学习HTTP相关知识笔记
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​如何防止网络攻击?
  • #NOIP 2014# day.2 T2 寻找道路
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (day6) 319. 灯泡开关
  • (Ruby)Ubuntu12.04安装Rails环境
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (论文阅读40-45)图像描述1
  • (全注解开发)学习Spring-MVC的第三天
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)http协议
  • (转)jQuery 基础
  • ****Linux下Mysql的安装和配置
  • ***检测工具之RKHunter AIDE
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Framework 4.6.2改进了WPF和安全性
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .net快速开发框架源码分享
  • @RequestMapping-占位符映射
  • @RequestParam详解
  • @Responsebody与@RequestBody
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [Ariticle] 厚黑之道 一 小狐狸听故事
  • [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]