博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HttpWebRequest 发送简单参数
阅读量:5294 次
发布时间:2019-06-14

本文共 2489 字,大约阅读时间需要 8 分钟。

1、发送端

using System.Net;

using System.Text;
using System.IO;

 

 

// Prepare web request

//string url="http://localhost:5814/WebSite1/Default2.aspx"
string url = "http://localhost:10209/10、传递参数/httpWebRequest2.aspx";

// 创建 WebRequest 对象,WebRequest 是抽象类,定义了请求的规定,

// 可以用于各种请求,例如:Http, Ftp 等等。
// HttpWebRequest 是 WebRequest 的派生类,专门用于 Http
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
// 请求的方式通过 Method 属性设置 ,默认为 GET
// 可以将 Method 属性设置为任何 HTTP 1.1 协议谓词:GET、HEAD、POST、PUT、DELETE、TRACE 或 OPTIONS。
myRequest.Method = "POST";

// 拼接成请求参数串,并进行编码,成为字节
string strId = "jaer";
string strPassword = "123456";
ASCIIEncoding encoding = new ASCIIEncoding();
string postData = "userid=" + strId;
postData += "&password=" + strPassword;

byte[] data = encoding.GetBytes(postData);

// 设置请求的参数形式

myRequest.ContentType = "application/x-www-form-urlencoded";
// 设置请求参数的长度.
myRequest.ContentLength = data.Length;

// 取得发向服务器的流
Stream newStream = myRequest.GetRequestStream();
// Send the data.
// 取得发向服务器的流
newStream.Write(data, 0, data.Length);
// 完成后,关闭请求流.
newStream.Close();
// Get response
// GetResponse 方法才真的发送请求,等待服务器返回
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
// 然后可以得到以流的形式表示的回应内容
Stream receiveStream=myResponse.GetResponseStream();
// 还可以将字节流包装为高级的字符流,以便于读取文本内容
// 需要注意编码
StreamReader reader = new StreamReader(receiveStream, Encoding.Default);
string content = reader.ReadToEnd();
Response.Write(content);

// 完成后要关闭字符流,字符流底层的字节流将会自动关闭

myResponse.Close();
receiveStream.Close();

 

 

2、 接收端: 

 

string ID = Request.Form["userid"].ToString();

string password = Request.Form["password"].ToString();
if (ID == "jaer" && password == "123456")
{
Response.Write(200);
//Response.Write("啊啊啊");
}

 

 

说明: 发送的是两个参数,没有过多的处理。

对于发送端的各种过冲介绍的比较清楚。

 

WebRequest 使用的基本思路:

(1) WebRequest 是即一个虚类,使用的时候要具体实例化,分为http对象和ftp对象,这是两种传输格式。

(2)HttpWebRequest 具体传送的是二进制流,所以要对传输的信息进行编码、转换

           ASCIIEncoding encoding = new ASCIIEncoding();  ---编码方式

           byte[] data = encoding.GetBytes(postData);  --字符串编码为数组

           Stream newStream = myRequest.GetRequestStream();--设定流

           newStream.Write(data, 0, data.Length);)--- 将数据填充到流

    为了能够正确的解析二进制流,流头部具有规定的格式说明:

(3)设定好了,把流发出去就可以了。

     // Send the data.

       // 取得发向服务器的流
        newStream.Write(data, 0, data.Length);
      // 完成后,关闭请求流.
       newStream.Close();
   // Get response
       // GetResponse 方法才真的发送请求,等待服务器返回
       HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();

    疑问:到底是哪个发送的?没有发送之前就能把流给关闭了?流发送的,但是只是填写了流的内容,流就调用HttpWebRequest进行发送了,不能啊????

 

转载于:https://www.cnblogs.com/gongyu/p/3977345.html

你可能感兴趣的文章
将tiff文件转化为jpg文件并保存
查看>>
ubuntu 16.04 开机脚本
查看>>
 VS2012 C#调用C++ dll
查看>>
TCL:表格(xls)中写入数据
查看>>
SQL SERVER 2005中如何获取日期(一个月的最后一日、一年的第一日等等)
查看>>
django 学习笔记(转)
查看>>
控制台程序秒变Windows服务(Topshelf)
查看>>
字节流与字符流的区别详解
查看>>
20141026--娱乐-箱子
查看>>
自定义分页
查看>>
Oracle事务
查看>>
任意输入10个int类型数据,把这10个数据首先按照排序输出,挑出这些数据里面的素数...
查看>>
String类中的equals方法总结(转载)
查看>>
图片问题
查看>>
bash使用规则
查看>>
AVL数
查看>>
第二章练习
查看>>
ajax2.0
查看>>
C#时间截
查看>>
C语言程序设计II—第九周教学
查看>>