博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HttpWebRequest 完成Get和Post
阅读量:5888 次
发布时间:2019-06-19

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

  
///
 
<summary>
        
///
 Get方式请求
        
///
 
</summary>
        
///
 
<param name="getUrl">
请求的URL
</param>
        
///
 
<param name="cookies">
请求时带上的Cookies
</param>
        
///
 
<param name="timeOut">
请求的超时时间
</param>
        
///
 
<param name="userAgent">
请求用户的Agent
</param>
        
///
 
<returns></returns>
        
public
 
static
 HttpWebResponse HttpGetResponse(
string
 getUrl,
int
 timeOut,
string
 userAgent,
string
 cookiestr)
        {
            
//
检查URL
            
if
 (
string
.IsNullOrEmpty(getUrl))
            {
                
throw
 
new
 ArgumentException(
"
请求的URL不能为空!
"
);   
            }
            
//
创建Request
            HttpWebRequest request 
=
 WebRequest.Create(getUrl) 
as
 HttpWebRequest;
            
//
请求方式为Get
            request.Method 
=
 
"
GET
"
;
            request.UserAgent 
=
 DefaultUserAgent;
            
//
用户的UserAgent
            
if
 (
!
string
.IsNullOrEmpty(userAgent))
            {
                request.UserAgent 
=
 userAgent;
            }
            
//
如果有超时设定
            
if
 (timeOut 
>
 
0
)
            {
                request.Timeout 
=
 timeOut;
            }
            
//
设置请求带上的Cookies
            
if
 (
!
string
.IsNullOrEmpty(cookiestr))
            {
                request.Headers[
"
Cookie
"
=
 cookiestr;
            }           
            
return
 request.GetResponse() 
as
 HttpWebResponse;
        }
        
///
 
<summary>
        
///
 Post方式请求
        
///
 
</summary>
        
///
 
<param name="postUrl">
post的URL
</param>
        
///
 
<param name="parameters">
post过去的参数
</param>
        
///
 
<param name="timeout">
请求超时时间
</param>
        
///
 
<param name="userAgent">
请的用户的agent
</param>
        
///
 
<param name="requestEncoding">
请求的编码
</param>
        
///
 
<param name="cookiestr">
请求要带上的cookie
</param>
        
///
 
<returns></returns>
        
public
 
static
 HttpWebResponse HttpPostResponse(
string
 postUrl, IDictionary
<
string
string
>
 parameters, 
int
?
 timeout, 
string
 userAgent, Encoding requestEncoding,
string
 cookiestr)
        {
            
if
 (
string
.IsNullOrEmpty(postUrl))
            {
                
throw
 
new
 ArgumentNullException(
"
postUrl
"
);
            }
            
if
 (requestEncoding 
==
 
null
)
            {
                
throw
 
new
 ArgumentNullException(
"
requestEncoding
"
);
            }
            HttpWebRequest request 
=
 
null
;
       
            
//
如果是发送HTTPS请求  
            
if
 (postUrl.StartsWith(
"
https
"
, StringComparison.OrdinalIgnoreCase))
            {
                ServicePointManager.ServerCertificateValidationCallback 
=
 
new
 RemoteCertificateValidationCallback((s, x, xc, e) 
=>
 { 
return
 
true
; });
                request 
=
 WebRequest.Create(postUrl) 
as
 HttpWebRequest;
                request.ProtocolVersion 
=
 HttpVersion.Version11;
            }
            
else
            {
                request 
=
 WebRequest.Create(postUrl) 
as
 HttpWebRequest;
            }
            request.Method 
=
 
"
POST
"
;
            request.ContentType 
=
 
"
application/x-www-form-urlencoded
"
;
           
            
if
 (
!
string
.IsNullOrEmpty(userAgent))
            {
                request.UserAgent 
=
 userAgent;
            }
            
else
            {
                request.UserAgent 
=
 DefaultUserAgent;
            }
            
if
 (timeout.HasValue)
            {
                request.Timeout 
=
 timeout.Value;
            }
            
if
 (
!
string
.IsNullOrEmpty(cookiestr))
            {    
                request.Headers[
"
Cookie
"
=
 cookiestr;
            }
            
//
如果需要POST数据  
            
if
 (
!
(parameters 
==
 
null
 
||
 parameters.Count 
==
 
0
))
            {
                StringBuilder buffer 
=
 
new
 StringBuilder();
                
int
 i 
=
 
0
;
                
foreach
 (
string
 key 
in
 parameters.Keys)
                {
                    
if
 (i 
>
 
0
)
                    {
                        buffer.AppendFormat(
"
&{0}={1}
"
, key, parameters[key]);
                    }
                    
else
                    {
                        buffer.AppendFormat(
"
{0}={1}
"
, key, parameters[key]);
                    }
                    i
++
;
                }
                
byte
[] data 
=
 requestEncoding.GetBytes(buffer.ToString());
                
using
 (Stream stream 
=
 request.GetRequestStream())
                {
                    stream.Write(data, 
0
, data.Length);
                }
            }
           HttpWebResponse hr
=
 request.GetResponse() 
as
 HttpWebResponse;
          
           
return
 hr;
        }

作者:Louja

出处:http://loujady.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此声明,且在文章页面给出原文连接,否则保留追究法律责任的权利。 
 

转载于:https://www.cnblogs.com/loujady/archive/2011/09/13/2174688.html

你可能感兴趣的文章
JSK-61 二进制加法【大数】
查看>>
HDU1877 又一版 A+B
查看>>
@ 添加属性(属性注入)
查看>>
往sde中导入要素类报错000732
查看>>
sql基本运算
查看>>
cxf 整合 spring 时 java.lang.VerifyError异常
查看>>
javascript中工厂模式
查看>>
MFC GetDlgItemText 失败
查看>>
NSString NSMutableString
查看>>
个人练习集锦
查看>>
log4net 将日志写入数据库
查看>>
springboot之启动方式
查看>>
初次安装git配置用户名和邮箱及密钥
查看>>
微服务架构盛行的时代,你需要了解点 Spring Boot
查看>>
6.1(续)索引、索引组织表--Oracle模式对象
查看>>
工作5年左右的程序员如何在职业瓶颈期内快速提升自己的身价?提升后如何有效变现自己的高质量技能?...
查看>>
动画 球
查看>>
C++中的堆,栈,静态内存区,常量区
查看>>
动态SQL实现与注意事项(有返回值与无返回值动态SQL 实现)
查看>>
java struts2 debug
查看>>