
通過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做什么操作吧。