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实现派(Pie, NWERC 2006, LA 3635)

    题目 有F+1个人来分N个圆形派,每个人得到的必须是一整块派,而不是几块拼在一起,且面积要相同.求每个人最多能得到多大面积的派(不必是圆形). 输入的第一行为数据组数T.每组数据的第一行为两个整数N和 ...

  2. Android中如何使用对话框(单选对话框和多选对话框)

    在主XML中声明两个Button,声明Id package com.example.myapplication; import androidx.appcompat.app.AlertDialog; ...

  3. 四、归并排序 && 快速排序

    一.归并排序 Merge Sort 1.1.实现原理 如果要排序一个数组,我们先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起,这样整个数组就都有序了. 归并排序使 ...

  4. 获取Google浏览器保存的密码

    获取Google中保存的密码 直接在浏览器上输入 chrome://settings/passwords

  5. Python实现海贼王的歌词组成词云图

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:一粒米饭 喜欢的朋友欢迎关注小编,除了分享技术文章之外还有很多福利, ...

  6. Openshift 4.4 静态 IP 离线安装系列:准备离线资源

    本系列文章描述了离线环境下以 UPI (User Provisioned Infrastructure) 模式安装 Openshift Container Platform (OCP) 4.4.5 的 ...

  7. CSS中的float和margin的混合使用

    在最近的学习中,在GitHub上找了一些布局练习,我发现了我自己对布局超级不熟悉(很难受). 在以前的学习中,感觉使用CSS就记住各个属性的功能就OK了,但是呢?真的很打脸.不说了,太伤心了,进入正题 ...

  8. Python流程控制语句详解

    1.程序结构 计算机在解决问题时,分别是顺序执行所有语句.选择执行部分语句.循环执行部分语句,分别是:顺序结构.选择结构.循环结构.如下图: 2.选择语句 2.1最简单的if语句 Python使用保留 ...

  9. SpringColud Eureka的服务注册与发现

    一.Eureka简介 本文中所有代码都会上传到git上,请放心浏览 项目git地址:https://github.com/839022478/Spring-Cloud 在传统应用中,组件之间的调用,通 ...

  10. 【Spring注解驱动开发】在@Import注解中使用ImportBeanDefinitionRegistrar向容器中注册bean

    写在前面 在前面的文章中,我们学习了如何使用@Import注解向Spring容器中导入bean,可以使用@Import注解快速向容器中导入bean,小伙伴们可以参见<[Spring注解驱动开发] ...