C# http请求相关的函数 HttpWebRequest: Post , Get ; PostAndRedirect

1、 通过HttpWebRequest发起一个Post请求,并获取返回数据

 1 使用指定编码格式发送一个POST请求,并通过约定的编码格式获取返回的数据
 2
 3 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->
 4     /// <summary>
 5     /// 使用指定编码格式发送一个POST请求,并通过约定的编码格式获取返回的数据
 6     /// </summary>
 7     /// <param name="url">请求的url地址</param>
 8     /// <param name="parameters">请求的参数集合</param>
 9     /// <param name="reqencode">请求的编码格式</param>
10     /// <param name="resencode">接收的编码格式</param>
11     /// <returns></returns>
12     public static string SendPostRequest(string url, NameValueCollection parameters, Encoding reqencode, Encoding resencode)
13     {
14         HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
15         req.Method = "post";
16         req.ContentType = "application/x-www-form-urlencoded";
17
18         StringBuilder parassb = new StringBuilder();
19         foreach (string key in parameters.Keys)
20         {
21             if (parassb.Length > 0)
22                 parassb.Append("&");
23             parassb.AppendFormat("{0}={1}", key, parameters[key]);
24         }
25         byte[] data = reqencode.GetBytes(parassb.ToString());
26         Stream reqstream = req.GetRequestStream();
27         reqstream.Write(data, 0, data.Length);
28         reqstream.Close();
29         string result = String.Empty;
30         using (StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream(), resencode))
31         {
32             result = reader.ReadToEnd();
33         }
34         return result;
35     }

2、通过HttpWebRequest发起一个Get请求,并获取返回数据

 1 HttpWebRequest 发送一个GET请求
 2
 3 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->
 4
 5     /*
 6      * 需要引用如下namespace
 7      * using System.Reflection;
 8      * using System.Text;
 9      * using System.Net;
10      * using System.IO;
11      */
12
13     /// <summary>
14     /// HttpWebRequest 发送一个GET请求
15     /// </summary>
16     /// <param name="url">请求的url地址</param>
17     /// <param name="parameters">请求的参数集合</param>
18     /// <param name="reqencode">请求的编码格式</param>
19     /// <param name="resencode">接收的编码格式</param>
20     /// <returns></returns>
21     public static string SendGetRequest(string baseurl, NameValueCollection parameters, Encoding reqencode, Encoding resencode)
22     {
23         StringBuilder parassb = new StringBuilder();
24         foreach (string key in parameters.Keys)
25         {
26             if (parassb.Length > 0)
27                 parassb.Append("&");
28             parassb.AppendFormat("{0}={1}", HttpUtility.UrlEncode(key, reqencode), HttpUtility.UrlEncode(parameters[key], reqencode));
29         }
30
31         if (parassb.Length > 0)
32         {
33             baseurl += "?" + parassb;
34         }
35         HttpWebRequest req = (HttpWebRequest)WebRequest.Create(baseurl);
36         req.Method = "GET";
37         req.MaximumAutomaticRedirections = 3;
38         req.Timeout = 5000;
39
40         string result = String.Empty;
41         using (StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream(), resencode))
42         {
43             result = reader.ReadToEnd();
44         }
45         return result;
46     }

3、通过编程的方式实现Post提交请求并重定向至新的URL地址

 1 Post请求并且重定向
 2
 3 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->
 4     /// <summary>
 5     /// Post请求并且重定向
 6     /// </summary>
 7     /// <param name="url"></param>
 8     /// <param name="parameters"></param>
 9     /// <param name="context"></param>
10     public static void PostAndRedirect(string url, NameValueCollection parameters, HttpContext context)
11     {
12         StringBuilder script = new StringBuilder();
13         script.AppendFormat("<form name=redirpostform action=‘{0}‘ method=‘post‘>", url);
14         foreach (string key in parameters.Keys)
15         {
16             script.AppendFormat("<input type=‘hidden‘ name=‘{0}‘ value=‘{1}‘>",
17                 key, parameters[key]);
18         }
19         script.Append("</form>");
20         script.Append("<script language=‘javascript‘>redirpostform.submit();</script>");
21         context.Response.Write(script);
22         context.Response.End();
23     }

感谢:http://www.cnblogs.com/didi/archive/2010/06/03/1750723.html

时间: 2024-10-09 13:13:35

C# http请求相关的函数 HttpWebRequest: Post , Get ; PostAndRedirect的相关文章

几个和DataTable相关的函数

一.关于本文 本文中的DataTableHelper类包括了4个操作DataTable的函数,分别是 1)public static DataTable GetTestDataTable() 这是一个测试用的函数,生成一个有内容的DataTable 2)public static string PrintDataTable(DataTable dt) 这个函数向控制台打印一个DataTable中的所有内容 3)public static DataTable GetAnotherDataTable

(二十四)linux新定时器:timefd及相关操作函数

timerfd是Linux为用户程序提供的一个定时器接口.这个接口基于文件描述符,通过文件描述符的可读事件进行超时通知,所以能够被用于select/poll的应用场景. 一,相关操作函数 #include <sys/timerfd.h> int timerfd_create(int clockid, int flags); int timerfd_settime(int fd, int flags, const struct itimerspec *new_value, struct itim

串口相关的函数

要使能串口 1 的中断,同时设置抢占优先级为 1,子优先级位 2,初始化的方法是: USART_InitTypeDef USART_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//串口 1 中断 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ;// 抢占优先级为 1 NVIC_InitStructure.NVIC_IRQChannelSubPrior

Java Thread 相关的函数

构造方法摘要 Thread()          分配新的 Thread 对象. Thread(Runnable target)          分配新的 Thread 对象. Thread(Runnable target, String name)          分配新的 Thread 对象. Thread(String name)          分配新的 Thread 对象. Thread(ThreadGroup group, Runnable target)          分

Android 内部存储相关的函数(getCacheDir,getDir, getFileStreamPath,getFilesDir,openFileInput, ...)

为了保证应用程序存储数据的安全性,开发者在开发应用程序的过程中需要注意使用Android 应用程序的内部存储空间. 根据不同的要求,将对应的数据文件.缓存文件.临时文件等分别存储在相应的位置. 注意:存储在SDCard 上的文件,将对任何Android 应用程序可见,并具有存取权限.因此,仅仅是应用程序自己使用,的临时文件也不要存储到SDCard上. 应用程序内部存储相关函数,请参考Android 官方网站, 下文对几个重要函数做了中文介绍: 出处:http://blog.csdn.net/hu

与对象相关的函数

与对象相关的函数 get_object_vars();????????用于获取对象中的公有属性 示例: is_subclass_of(象名或类名,父类名);????????判断一个类是否是另一个类的子类 class_exists(类名)????????判断一个类是否存在

UCOS 请求任务删除函数 及其应用

有时候,如果任务A拥有内存缓冲区或信号量之类的资源,而任务B想删除该任务,这些资源就可能由于没被释放而丢失.在这种情况下,用户可以想法子让拥有这些资源的任务在使用完资源后,先释放资源,再删除自己.用户可以通过OSTaskDelReq()函数来完成该功能. 函数名 OSTaskDelReq 参数 Prio要删除任务的优先级(0xFF表示当前任务) 功能描述 请求删除任务 函数原型 INT8U OSTaskDelReq(INT8U prio) 核   心   代   码 { if (prio ==

Scala中Zip相关的函数

在Scala中存在好几个Zip相关的函数,比如zip,zipAll,zipped 以及zipWithIndex等等.我们在代码中也经常看到这样的函数,这篇文章主要介绍一下这些函数的区别以及使用. 1.zip函数将传进来的两个参数中相应位置上的元素组成一个pair数组.如果其中一个参数元素比较长,那么多余的参数会被删掉.看下英文介绍吧: Returns a list formed from this list and another iterable collection by combining

Lua中编译执行代码相关的函数以及机制

可以说Lua之所以称为是一种解释型的语言,正是因为有诸如load这样的函数,因为这样的函数使得Lua可以执行动态生成的代码.下面具体来分析这些函数.   load函数 load函数原型如下: load (chunk [, chunkname [, mode [, env]]]) 该函数加载一个chunk,如果没有错误,则返回一个函数.如果传入chunk的值是一个字符串,则就加载这个字符串:如果传入chunk的值是一个函数,则这个函数必须返回一个字符串,并且load会一直调用这个函数,直到这个函数