几个http请求相关的函数

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

 1 ExpandedBlockStart.gif ContractedBlock.gif          /**/ /// <summary>
 2        /// 使用指定编码格式发送一个POST请求,并通过约定的编码格式获取返回的数据
 3        /// </summary>
 4        /// <param name="url">请求的url地址</param>
 5        /// <param name="parameters">请求的参数集合</param>
 6        /// <param name="reqencode">请求的编码格式</param>
 7        /// <param name="resencode">接收的编码格式</param>
 8        /// <returns></returns>

 9          public   static   string  SendPostRequest( string  url, NameValueCollection parameters, Encoding reqencode, Encoding resencode)
10 ExpandedBlockStart.gifContractedBlock.gif         {
11            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
12            req.Method = "post";
13            req.ContentType = "application/x-www-form-urlencoded";
14
15            StringBuilder parassb = new StringBuilder();
16            foreach (string key in parameters.Keys)
17ExpandedSubBlockStart.gifContractedSubBlock.gif            {
18                if (parassb.Length >0)
19                    parassb.Append("&");
20                parassb.AppendFormat("{0}={1}", key,parameters[key]);
21            }

22            byte[] data = reqencode.GetBytes(parassb.ToString());
23            Stream reqstream = req.GetRequestStream();
24
25            reqstream.Write(data, 0, data.Length);
26            reqstream.Close();
27
28            string result = String.Empty;
29            using (StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream(), resencode))
30ExpandedSubBlockStart.gifContractedSubBlock.gif            {
31                result = reader.ReadToEnd();
32            }

33            return result;
34        }

35

 

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

 

ContractedBlock.gif ExpandedBlockStart.gif Code
 1ExpandedBlockStart.gifContractedBlock.gif        /**//// <summary>
 2        /// 发送一个GET请求
 3        /// </summary>
 4        /// <param name="url">请求的url地址</param>
 5        /// <param name="parameters">请求的参数集合</param>
 6        /// <param name="reqencode">请求的编码格式</param>
 7        /// <param name="resencode">接收的编码格式</param>
 8        /// <returns></returns>

 9        public static string SendGetRequest(string baseurl, NameValueCollection parameters, Encoding reqencode, Encoding resencode)
10ExpandedBlockStart.gifContractedBlock.gif        {
11            StringBuilder parassb = new StringBuilder();
12            foreach (string key in parameters.Keys)
13ExpandedSubBlockStart.gifContractedSubBlock.gif            {
14                if (parassb.Length > 0)
15                    parassb.Append("&");
16                parassb.AppendFormat("{0}={1}", HttpUtility.UrlEncode(key, reqencode), HttpUtility.UrlEncode(parameters[key], reqencode));
17            }

18
19            if (parassb.Length > 0)
20ExpandedSubBlockStart.gifContractedSubBlock.gif            {
21                baseurl += "?" + parassb;
22            }

23            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(baseurl);
24            req.Method = "GET";
25            req.MaximumAutomaticRedirections = 3;
26            req.Timeout = 5000;
27
28            string result = String.Empty;
29            using (StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream(), resencode))
30ExpandedSubBlockStart.gifContractedSubBlock.gif            {
31                result = reader.ReadToEnd();
32            }

33            return result;
34
35        }

36
37

 

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

 

 

 1 ExpandedBlockStart.gif ContractedBlock.gif          /**/ /// <summary>
 2        /// Post请求并且重定向
 3        /// </summary>
 4        /// <param name="url"></param>
 5        /// <param name="parameters"></param>
 6        /// <param name="context"></param>

 7          public   static   void  PostAndRedirect( string  url,NameValueCollection parameters,HttpContext context)
 8 ExpandedBlockStart.gifContractedBlock.gif         {
 9            StringBuilder script = new StringBuilder();
10            script.AppendFormat("<form name=redirpostform action='{0}' method='post'>",url);
11            foreach(string key in parameters.Keys)
12ExpandedSubBlockStart.gifContractedSubBlock.gif            {
13                script.AppendFormat("<input type='hidden' name='{0}' value='{1}'>",
14                    key,parameters[key]);
15            }

16            script.Append("</form>");
17            script.Append("<script language='javascript'>redirpostform.submit();</script>");
18            context.Response.Write(script);
19            context.Response.End();
20        }

 

转载于:https://www.cnblogs.com/mincyw/archive/2008/08/29/1279345.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: C++中的函数结构体是一种可以像普通函数一样使用的结构体。它可以通过重载运算符来实现,也可以通过定义函数指针来实现。 举个例子: ``` struct Add { int operator()(int a, int b) const { return a + b; } }; Add add; int result = add(3, 4); // result is 7 ``` 另一个例子: ``` struct Divide { double operator()(double a, double b) const { return a / b; } }; Divide divide; double result = divide(10.0, 3.0); // result is 3.3333 ``` 还有一个例子 ``` struct Multiply { int operator()(int a, int b) const { return a * b; } }; Multiply multiply; int result = multiply(2, 3); // result is 6 ``` ### 回答2: 函数结构体是指将函数作为结构体的成员,以实现对函数的封装和组织。以下是几个函数结构体的例子: 1. 四则运算函数结构体:包含加、减、乘、除等基本运算函数作为结构体成员。通过定义函数指针,可以通过该结构体调用相应的函数来进行四则运算。 2. 排序函数结构体:包含多种排序算法,如冒泡排序、快速排序、归并排序等函数作为结构体成员。通过该结构体可以灵活选择不同的排序算法来对不同的数据进行排序。 3. 文件操作函数结构体:包含打开、读取、写入、关闭等文件操作函数作为结构体成员。通过定义函数指针,可以通过该结构体来调用相应的文件操作函数,实现对文件的读写操作。 4. 网络请求函数结构体:包含发送、接收、解析数据等网络相关函数作为结构体成员。通过该结构体可以进行网络请求,并对收到的数据进行解析和处理。 5. 系统调用函数结构体:包含调用、进程管理、内存管理等系统调用函数作为结构体成员。通过该结构体可以直接调用系统提供的功能,实现底层操作和控制。 这些函数结构体的例子都可以通过结构体内的函数指针成员来调用具体的函数,提高代码的组织性和可复用性,并对函数进行封装,方便使用和维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值