通过httpwebrequest实现http的post和get⽅法莫名出现500内
部服务器。。。
通过httpwebrequest实现http的post⽅法
Dim data As Byte()
data = System.Text.Encoding.UTF8.GetBytes("...") '参数name1=value1&
'发送请求
Dim myReq As System.Net.HttpWebRequest = System.Net.WebRequest.Create(svcurl)
myReq.Method = "POST"
myReq.ContentType = "application/x-www-form-urlencoded;chart=UTF-8"
myReq.ContentLength = data.Length
Dim myStream As System.IO.Stream = myReq.GetRequestStream
myStream.Write(data, 0, data.Length)
myStream.Clo()
'接收响应
Dim myRespon As System.Net.HttpWebRespon = myReq.GetRespon
Dim strRespon As String = ""
myStream = myRespon.GetResponStream
Dim myStreamReader As New System.IO.StreamReader(myStream)
strRespon = myStreamReader.ReadToEnd
myStreamReader.Clo()
myStreamReader = Nothing
myStream.Clo()
myStream = Nothing
myRespon.Clo()
myRespon = Nothing
myReq = Nothing
通过httpwebrequest实现http的get⽅法
'发送Web请求
Dim myReq As System.Net.HttpWebRequest = System.Net.WebRequest.Create(svcurl)
myReq.Headers.Set("Pragma", "no-cache")
myReq.Method = "GET"
'接收响应
Dim myRespon As System.Net.HttpWebRespon = myReq.GetRespon
Dim strRespon As String = ""
Dim myStream As System.IO.Stream = myRespon.GetResponStream
Dim myStreamReader As New System.IO.StreamReader(myStream)
strRespon = myStreamReader.ReadToEnd
myStreamReader.Clo()
myStreamReader = Nothing
myStream.Clo()
myStream = Nothing
myRespon.Clo()
myRespon = Nothing
myReq = Nothing
⼀般来说如果通过浏览器能访问那么通过httpwebrequest应该也可以正常访问,但是这次就碰到了⼀个通过浏览器能正常访问通过httpwebrequest报500内部服务器错误的问题,真是莫名其妙让⼈百思不得其解,后来经过仔细分析查找发现⽹站的
Application_BeginRequest事件中有⼀段分析http headers的Ur-agent的代码没加错误处理,⽽通过上⾯的代码并没有给Ur-agent 初始化,这或许就是问题的根源。
当然除了Ur-agent以外可能还有别的东西可能会有影响,httpwebrequest可以设置的http headers如下表
标头设置⽅
Accept由属性设置。
Connection由属性和属性设置。
Content-Length由属性设置。
Content-Type由属性设置。
Expect由属性设置。
Date由系统设置为当前⽇期。
Host由系统设置为当前主机信息。
If-Modified-Since由属性设置。
Range由⽅法设置。
Referer由属性设置。
Transfer-Encoding由属性设置(属性必须为 true)。
Ur-Agent由属性设置。
再碰到类似的问题就检查Application_BeginRequest⾥有没有对http headers做什么操作吧。