1       前言

http协议详解参考HTTP协议

WEB常用Get和Post请求。

地址栏参数:url为www.viwofer.com?id=12&name=viwofer则id=12&name=viwofer为地址栏参数。key1=value&key2=value2。

Json参数:{"key1":"value","key2":"value2"}。

2       GET请求

常用Get请求使用地址栏参数

        /// <summary>
/// Get获取数据
/// </summary>
/// <param name="serverUrl">服务Url</param>
/// <param name="postData">传递参数,格式如“key1=value&key2=value2”</param>
/// <returns></returns>
public static string HttpGetConnectToServer(string serverUrl, string postData = "")
{
//创建请求
var request = (HttpWebRequest)WebRequest.Create(serverUrl + "?" + postData);
request.Method = "GET";
//设置上传服务的数据格式
request.ContentType = "application/x-www-form-urlencoded";
//请求的身份验证信息为默认
request.Credentials = CredentialCache.DefaultCredentials;
//请求超时时间
request.Timeout = ;
//设置cookie
request.CookieContainer = cookie; try
{
//读取返回消息
return GetResponseAsString(request);
}
catch (Exception ex)
{
//var result = new ServerResult();
return "{\"error\":\"connectToServer\",\"error_description\":\"" + ex.Message + "\"}";
}
}

3       Post请求

常用Post请求使用地址栏参数和Json格式参数。

3.1     参数为key1=value&key2=value2

        /// <summary>
/// Post获取数据
/// </summary>
/// <param name="serverUrl">服务Url</param>
/// <param name="postData">传递参数,格式如“key1=value&key2=value2”</param>
/// <returns></returns>
public static string HttpPostConnectToServer(string serverUrl, string postData)
{
var dataArray = Encoding.UTF8.GetBytes(postData);
//创建请求
var request = (HttpWebRequest)HttpWebRequest.Create(serverUrl);
request.Method = "POST";
request.ContentLength = dataArray.Length;
//设置上传服务的数据格式
request.ContentType = "application/x-www-form-urlencoded";
//请求的身份验证信息为默认
request.Credentials = CredentialCache.DefaultCredentials;
//请求超时时间
request.Timeout = ;
//设置cookie
request.CookieContainer = cookie;
//创建输入流
Stream dataStream; try
{
dataStream = request.GetRequestStream();
}
catch (Exception)
{
return null;//连接服务器失败
}
//发送请求
dataStream.Write(dataArray, , dataArray.Length);
dataStream.Close();
//读取返回消息
//string res;
try
{
//读取返回消息
return GetResponseAsString(request);
}
catch (Exception ex)
{
//连接服务器失败
return "{\"error\":\"connectToServer\",\"error_description\":\"" + ex.Message + "\"}";
}
}

3.2     参数为{"key1":"value","key2":"value2"}

        /// <summary>
/// Post获取数据
/// </summary>
/// <param name="serverUrl">服务Url</param>
/// <param name="postData">传递参数,格式如“{"key1":"value","key2":"value2"}”</param>
/// <returns></returns>
public static string HttpPostJsonConnectToServer(string serverUrl, string postData)
{
var dataArray = Encoding.UTF8.GetBytes(postData);
//创建请求
var request = (HttpWebRequest)HttpWebRequest.Create(serverUrl);
request.Method = "POST";
request.ContentLength = dataArray.Length;
//设置上传服务的数据格式 json格式的传递参数
request.ContentType = "application/json";
//请求的身份验证信息为默认
request.Credentials = CredentialCache.DefaultCredentials;
//请求超时时间
request.Timeout = ;
//设置cookie
request.CookieContainer = cookie;
//创建输入流
Stream dataStream;
try
{
dataStream = request.GetRequestStream();
}
catch (Exception)
{
return null;//连接服务器失败
}
//发送请求
dataStream.Write(dataArray, , dataArray.Length);
dataStream.Close();
//读取返回消息
try
{
//读取返回消息
return GetResponseAsString(request);
}
catch (Exception ex)
{
//连接服务器失败
//var result = new ServerResult();
return "{\"error\":\"connectToServer\",\"error_description\":\"" + ex.Message + "\"}";
}
}

4       相关代码

        //============================初始化Cookie================================
private static CookieContainer cookie = new CookieContainer(); //==================================获取返回参数======================================
private static string GetResponseAsString(HttpWebRequest request)
{
try
{
var response = (HttpWebResponse)request.GetResponse();
var reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string res = reader.ReadToEnd();
reader.Close();//关闭读取流
response.Close();//关闭响应流
return res;
}
catch (Exception ex)
{
return null;
}
}

C#模拟HTTP协议请求的更多相关文章

  1. curl 模拟https协议请求

    在原有基础上再添加设置下面两个参数: curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查 curl_setopt($ch, CURLO ...

  2. PHP模拟发送POST请求之一、HTTP协议头部解析

    WEB开发中信息基本全是在POST与GET请求与响应中进行,GET因其基于URL的直观,易被我们了解,可POST请求因其信息的隐蔽,在安全的同时,也给开发者们模拟发送带来了麻烦.接下来的几篇博文中,我 ...

  3. PHP模拟发送POST请求之五curl基本使用和多线程优化

    今天来介绍PHP模拟发送POST请求的重型武器——cURL函数库的使用和其多线程的优化方法. 说起cURL函数,可谓是老生常谈,但网上许多资料都在关键部分语焉不详,列出一大堆手册上的东西,搞得我入门时 ...

  4. httpClient模拟浏览器发请求

    一.介绍 httpClient是Apache公司的一个子项目, 用来提高高效的.最新的.功能丰富的支持http协议的客户端编程工具包.完成可以模拟浏览器发起请求行为. 二.简单使用例子 : 模拟浏览器 ...

  5. Android 模拟HTTP协议的编码问题 Android默认编码UTF-8

    Android通过GET和POST方法请求服务器和浏览器请求的过程是不一样的. 浏览器请求服务器的时候会先将中文进行UTF-8编码,然后再发送到服务器端. Android编程下我们需要通过URLEnc ...

  6. 【转载】curl 模拟 GET\POST 请求,curl查看响应头 以及 curl post 上传文件

    补充说明:curl查看响应头 curl -I "http://www.baidu.com"HTTP/1.1 200 OK #HTTP协议 HTTP 返回码Server: Tengi ...

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

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

  8. telnet客户端模拟浏览器发送请求

    telnet 客户端 telnet客户端能够发出请求去连接服务器(模拟浏览器) 使用telnet之前,需要开启telnet客户端 1.进入控制面板 2.进入程序和功能,选择打开或关闭windows功能 ...

  9. Linux curl 命令模拟 POST/GET 请求

    Linux curl 命令模拟 POST/GET 请求   本文链接:https://blog.csdn.net/sunboy_2050/article/details/82156402 curl 命 ...

随机推荐

  1. Java实现 LeetCode 263 丑数

    263. 丑数 编写一个程序判断给定的数是否为丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例 1: 输入: 6 输出: true 解释: 6 = 2 × 3 示例 2: 输入: 8 输 ...

  2. java实现整数翻转

    ** 整数翻转** 以下程序把一个整数翻转(8765变为:5678),请补充缺少的代码. int n = 8765; int m = 0; while(n>0) { m = __________ ...

  3. Linux 文件特殊权限-SetGID

    SUID只针对二进制可执行文件,而SGID可以针对二进制文件,这时它和SUID非常类似,命令执行在执行程序的时候,组身份变换为该文件的属组,最常见的locate命令,普通用户也可以搜索文件目录,它也可 ...

  4. 【原创】Linux中断子系统(二)-通用框架处理

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  5. java之单点登录(SSO)

    单点登录(SSO):SSO是指在多个应用系统中个,用户只需要登陆一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于同一用户的登陆的机制. SSO的实现过程: 通过上述 ...

  6. 温故知新-快速理解Linux网络I/O

    文章目录 摘要 阻塞.非阻塞.同步.异步 Linux下的I/O模型 阻塞I/O模型 非阻塞I/O模型 I/O复用模型 select poll epoll 信号驱动I/O模型 异步I/O 参考 你的鼓励 ...

  7. AsyncTask源码解读

    AsyncTask源码解读 一.基本使用 protected void onPreExecute() protected abstract Result doInBackground(Params.. ...

  8. 我们是如何做DevOps的?

    一.DevOps的理解 DevOps的概念理解 DevOps 的概念在软件开发行业中逐渐流行起来.越来越多的团队希望实现产品的敏捷开发,DevOps 使一切成为可能.有了 DevOps ,团队可以定期 ...

  9. python数据类型转换&&格式化输出

    ①python的数据类型包含:数字.字符串.列表.元组.字典.集合这六种基本数据类型.不同数据类型的数据可以进行类型的转换. 使用input让用户输入的数据默认为字符串类型: name = input ...

  10. django——bbs

    今日内容概要 bbs是一个前后端不分离的全栈项目,前端和后端都需要我们自己一步步的完成 表创建及同步 注册功能 forms组件 用户头像前端实时展示 ajax 登陆功能 自己实现图片验证码 ajax ...