通过httpwebrequest实现http的post和get方法莫名出现500内部服务器错误的解决办法

通过httpwebrequest实现http的post方法

            Dim data As Byte()                                  
            data = System.Text.Encoding.UTF8.GetBytes("...") '参数name1=value1&name2=value2...
        
            '发送请求
            Dim myReq As System.Net.HttpWebRequest = System.Net.WebRequest.Create(svcurl)
            myReq.Method = "POST"
            myReq.ContentType = "application/x-www-form-urlencoded;charset=UTF-8"
            myReq.ContentLength = data.Length

            Dim myStream As System.IO.Stream = myReq.GetRequestStream
            myStream.Write(data, 0, data.Length)
            myStream.Close()

            '接收响应
            Dim myResponse As System.Net.HttpWebResponse = myReq.GetResponse
            Dim strResponse As String = ""
            myStream = myResponse.GetResponseStream
            Dim myStreamReader As New System.IO.StreamReader(myStream)
            strResponse = myStreamReader.ReadToEnd

            myStreamReader.Close()
            myStreamReader = Nothing
            myStream.Close()
            myStream = Nothing
            myResponse.Close()
            myResponse = 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 myResponse As System.Net.HttpWebResponse = myReq.GetResponse
            Dim strResponse As String = ""
            Dim myStream As System.IO.Stream = myResponse.GetResponseStream
            Dim myStreamReader As New System.IO.StreamReader(myStream)
            strResponse = myStreamReader.ReadToEnd
            myStreamReader.Close()
            myStreamReader = Nothing
            myStream.Close()
            myStream = Nothing
            myResponse.Close()
            myResponse = Nothing

            myReq = Nothing

一般来说如果通过浏览器能访问那么通过httpwebrequest应该也可以正常访问,但是这次就碰到了一个通过浏览器能正常访问通过httpwebrequest报500内部服务器错误的问题,真是莫名其妙让人百思不得其解,后来经过仔细分析查找发现网站的Application_BeginRequest事件中有一段分析http headers的User-agent的代码没加错误处理,而通过上面的代码并没有给User-agent初始化,这或许就是问题的根源。
当然除了User-agent以外可能还有别的东西可能会有影响,httpwebrequest可以设置的http headers如下表

标头

设置方

Accept

由 Accept 属性设置。

Connection

由 Connection 属性和 KeepAlive 属性设置。

Content-Length

由 ContentLength 属性设置。

Content-Type

由 ContentType 属性设置。

Expect

由 Expect 属性设置。

Date

由系统设置为当前日期。

Host

由系统设置为当前主机信息。

If-Modified-Since

由 IfModifiedSince 属性设置。

Range

由 AddRange 方法设置。

Referer

由 Referer 属性设置。

Transfer-Encoding

由 TransferEncoding 属性设置(SendChunked 属性必须为 true)。

User-Agent

由 UserAgent 属性设置。

再碰到类似的问题就检查Application_BeginRequest里有没有对http headers做什么操作吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值