C# Post数据和接收简单示例【摘】
2015-11-12 10:36
429 查看
using System.Xml;
using System.Net;
using System.Text;
using System.IO; public partial class Post_Server : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string type = "";
string Re = "";
Re += "数据传送方式:";
if (Request.RequestType.ToUpper() == "POST")
{
type = "POST";
Re += type + "<br/>参数分别是:<br/>";
SortedList table = Param();
if (table != null)
{
foreach (DictionaryEntry De in table) { Re += "参数名:" + De.Key + " 值:" + De.Value + "<br/>"; }
}
else
{ Re = "你没有传递任何参数过来!"; }
}
else
{
type = "GET";
Re += type + "<br/>参数分别是:<br/>";
NameValueCollection nvc = GETInput();
if (nvc.Count != 0)
{
for (int i = 0; i < nvc.Count; i++) { Re += "参数名:" + nvc.GetKey(i) + " 值:" + nvc.GetValues(i)[0] + "<br/>"; }
}
else
{ Re = "你没有传递任何参数过来!"; }
}
Response.Write(Re);
}
//获取GET返回来的数据
private NameValueCollection GETInput()
{ return Request.QueryString; }
// 获取POST返回来的数据
private string PostInput()
{
try
{
System.IO.Stream s = Request.InputStream;
int count = 0;
byte[] buffer = new byte[1024];
StringBuilder builder = new StringBuilder();
while ((count = s.Read(buffer, 0, 1024)) > 0)
{
builder.Append(Encoding.UTF8.GetString(buffer, 0, count));
}
s.Flush();
s.Close();
s.Dispose();
return builder.ToString();
}
catch (Exception ex)
{ throw ex; }
}
private SortedList Param()
{
string POSTStr = PostInput();
SortedList SortList = new SortedList();
int index = POSTStr.IndexOf("&");
string[] Arr = { };
if (index != -1) //参数传递不只一项
{
Arr = POSTStr.Split('&');
for (int i = 0; i < Arr.Length; i++)
{
int equalindex = Arr[i].IndexOf('=');
string paramN = Arr[i].Substring(0, equalindex);
string paramV = Arr[i].Substring(equalindex + 1);
if (!SortList.ContainsKey(paramN)) //避免用户传递相同参数
{ SortList.Add(paramN, paramV); }
else //如果有相同的,一直删除取最后一个值为准
{ SortList.Remove(paramN); SortList.Add(paramN, paramV); }
}
}
else //参数少于或等于1项
{
int equalindex = POSTStr.IndexOf('=');
if (equalindex != -1)
{ //参数是1项
string paramN = POSTStr.Substring(0, equalindex);
string paramV = POSTStr.Substring(equalindex + 1);
SortList.Add(paramN, paramV);
}
else //没有传递参数过来
{ SortList = null; }
}
return SortList;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
byte[] arrB = encode.GetBytes("aa=aa&bb=好飞");
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("http://localhost:11626/MyTest/Post_Server.aspx");
myReq.Method = "POST";
myReq.ContentType = "application/x-www-form-urlencoded";
myReq.ContentLength = arrB.Length;
Stream outStream = myReq.GetRequestStream();
outStream.Write(arrB, 0, arrB.Length);
outStream.Close();
//接收HTTP做出的响应
WebResponse myResp = myReq.GetResponse();
Stream ReceiveStream = myResp.GetResponseStream();
StreamReader readStream = new StreamReader(ReceiveStream, encode);
Char[] read = new Char[256];
int count = readStream.Read(read, 0, 256);
string str = null;
while (count > 0)
{
str += new String(read, 0, count);
count = readStream.Read(read, 0, 256);
}
readStream.Close();
myResp.Close();
Response.Write(str);
}
using System.Net;
using System.Text;
using System.IO; public partial class Post_Server : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string type = "";
string Re = "";
Re += "数据传送方式:";
if (Request.RequestType.ToUpper() == "POST")
{
type = "POST";
Re += type + "<br/>参数分别是:<br/>";
SortedList table = Param();
if (table != null)
{
foreach (DictionaryEntry De in table) { Re += "参数名:" + De.Key + " 值:" + De.Value + "<br/>"; }
}
else
{ Re = "你没有传递任何参数过来!"; }
}
else
{
type = "GET";
Re += type + "<br/>参数分别是:<br/>";
NameValueCollection nvc = GETInput();
if (nvc.Count != 0)
{
for (int i = 0; i < nvc.Count; i++) { Re += "参数名:" + nvc.GetKey(i) + " 值:" + nvc.GetValues(i)[0] + "<br/>"; }
}
else
{ Re = "你没有传递任何参数过来!"; }
}
Response.Write(Re);
}
//获取GET返回来的数据
private NameValueCollection GETInput()
{ return Request.QueryString; }
// 获取POST返回来的数据
private string PostInput()
{
try
{
System.IO.Stream s = Request.InputStream;
int count = 0;
byte[] buffer = new byte[1024];
StringBuilder builder = new StringBuilder();
while ((count = s.Read(buffer, 0, 1024)) > 0)
{
builder.Append(Encoding.UTF8.GetString(buffer, 0, count));
}
s.Flush();
s.Close();
s.Dispose();
return builder.ToString();
}
catch (Exception ex)
{ throw ex; }
}
private SortedList Param()
{
string POSTStr = PostInput();
SortedList SortList = new SortedList();
int index = POSTStr.IndexOf("&");
string[] Arr = { };
if (index != -1) //参数传递不只一项
{
Arr = POSTStr.Split('&');
for (int i = 0; i < Arr.Length; i++)
{
int equalindex = Arr[i].IndexOf('=');
string paramN = Arr[i].Substring(0, equalindex);
string paramV = Arr[i].Substring(equalindex + 1);
if (!SortList.ContainsKey(paramN)) //避免用户传递相同参数
{ SortList.Add(paramN, paramV); }
else //如果有相同的,一直删除取最后一个值为准
{ SortList.Remove(paramN); SortList.Add(paramN, paramV); }
}
}
else //参数少于或等于1项
{
int equalindex = POSTStr.IndexOf('=');
if (equalindex != -1)
{ //参数是1项
string paramN = POSTStr.Substring(0, equalindex);
string paramV = POSTStr.Substring(equalindex + 1);
SortList.Add(paramN, paramV);
}
else //没有传递参数过来
{ SortList = null; }
}
return SortList;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
byte[] arrB = encode.GetBytes("aa=aa&bb=好飞");
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("http://localhost:11626/MyTest/Post_Server.aspx");
myReq.Method = "POST";
myReq.ContentType = "application/x-www-form-urlencoded";
myReq.ContentLength = arrB.Length;
Stream outStream = myReq.GetRequestStream();
outStream.Write(arrB, 0, arrB.Length);
outStream.Close();
//接收HTTP做出的响应
WebResponse myResp = myReq.GetResponse();
Stream ReceiveStream = myResp.GetResponseStream();
StreamReader readStream = new StreamReader(ReceiveStream, encode);
Char[] read = new Char[256];
int count = readStream.Read(read, 0, 256);
string str = null;
while (count > 0)
{
str += new String(read, 0, count);
count = readStream.Read(read, 0, 256);
}
readStream.Close();
myResp.Close();
Response.Write(str);
}
相关文章推荐
- c# wince 禁止gprs/wcdma拨号时候弹出密码输入框
- C#中string.format用法详解
- c# 获取项目根目录方法
- c#4 目录伪静态
- 关于c#webform 通用变量的几种办法
- C#代码规范
- c# 中关于panel 的说明
- C#的winforms程序中的弹出窗口编写方式 一个窗口类
- C# 多线程
- (原创)c#学习笔记10--定义类成员02--类成员的其他议题02--调用重写或隐藏的基类方法
- (原创)c#学习笔记10--定义类成员02--类成员的其他议题01--隐藏基类方法
- C#中public、private、protected、internal、protected internal (转载)
- (原创)c#学习笔记10--定义类成员01--成员定义05--重构成员
- 【C#】C#中正则表达式的使用
- c# Internet时间服务器同步
- 【C#】正则表达式匹配中文,英文字母和数字及_写法!并控制长度
- 【C#】匹配中文字符串的4种正则表达式分享
- C# Memory model
- 用C#实现二进制的减法(包括二进制小数)
- C#的ConsoleKeyInfo