C#模拟http 发送post或get请求的简单实例

作者:jingxian 时间:2023-11-05 13:32:18 


private string HttpPost(string Url, string postDataStr)
   {
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
     request.Method = "POST";
     request.ContentType = "application/x-www-form-urlencoded";
     request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr);
     request.CookieContainer = cookie;
     Stream myRequestStream = request.GetRequestStream();
     StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
     myStreamWriter.Write(postDataStr);
     myStreamWriter.Close();

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

response.Cookies = cookie.GetCookies(response.ResponseUri);
     Stream myResponseStream = response.GetResponseStream();
     StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
     string retString = myStreamReader.ReadToEnd();
     myStreamReader.Close();
     myResponseStream.Close();

return retString;
   }

public string HttpGet(string Url, string postDataStr)
   {
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr);
     request.Method = "GET";
     request.ContentType = "text/html;charset=UTF-8";

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
     Stream myResponseStream = response.GetResponseStream();
     StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
     string retString = myStreamReader.ReadToEnd();
     myStreamReader.Close();
     myResponseStream.Close();

return retString;
   }

在post的时候有时也用的到cookie,像登录163发邮件时候就需要发送cookie,所以在外部一个cookie属性随时保存 CookieContainer cookie = new CookieContainer();

注意:有时候请求会重定向,但我们就需要从重定向url获取东西,像QQ登录成功后获取sid,但上面的会自动根据重定向地址跳转。我们可以用:

request.AllowAutoRedirect = false;设置重定向禁用,你就可以从headers的Location属性中获取重定向地址

标签:模拟,post,get,请求
0
投稿

猜你喜欢

  • C#实现图片上传(PC端和APP)保存及 跨域上传说明

    2022-11-10 17:05:11
  • Android实现每天定时提醒功能

    2021-10-18 09:52:33
  • JavaWeb简单文件上传流程的实战记录

    2023-04-02 09:14:59
  • Go Java算法最大单词长度乘积示例详解

    2022-09-27 18:16:19
  • 在Spring中编写事务的介绍

    2021-12-15 10:33:18
  • 浅谈C#中的值类型和引用类型

    2023-10-30 21:41:41
  • Android中悬浮窗口的实现原理实例分析

    2021-07-11 07:34:07
  • Java 8中的18个常用日期处理(收藏)

    2023-03-02 02:01:54
  • springcloud使用Hystrix进行微服务降级管理

    2023-02-02 06:51:30
  • hibernate-validator如何使用校验框架

    2023-05-25 07:26:29
  • Android 媒体库数据更新方法总结

    2022-04-24 10:22:17
  • Java 使用getClass().getResourceAsStream()方法获取资源

    2023-07-23 08:59:56
  • Java定时器Timer简述

    2023-07-20 19:17:16
  • SpringBoot利用jackson格式化时间的三种方法

    2022-03-26 22:28:56
  • C#序列化与反序列化实例

    2023-05-05 21:05:27
  • C#实现的文件压缩和解压缩类

    2022-11-30 16:08:08
  • springboot对接微信支付的完整流程(附前后端代码)

    2021-11-12 15:08:42
  • java获取和设置系统变量问题(环境变量)

    2023-11-19 07:34:07
  • Android 模仿QQ侧滑删除ListView功能示例

    2023-10-27 21:03:43
  • 使用logback实现按自己的需求打印日志到自定义的文件里

    2022-05-12 16:56:49
  • asp之家 软件编程 m.aspxhome.com