【问题标题】:Changing absolute URI to relative in HTTP POST header在 HTTP POST 标头中将绝对 URI 更改为相对
【发布时间】:2012-04-05 14:05:18
【问题描述】:

我有以下POST 请求:

POST http://blah/Request HTTP/1.1
Host: blah
Content-Length: 322
Proxy-Connection: Keep-Alive

<?xml version="1.0"?>
<Envelope>
<Header>
<UserID>uid</UserID>
<Password>pass</Password>
<SessionID />
<RequestType>GetDetails</RequestType>
<POSCompany>01</POSCompany>
<PackageType>DATA</PackageType>
<ActionType>READ</ActionType>
<SnoopUserID />
</Header>
<Body>
<MagicNumber>124</MagicNumber>
</Body>
</Envelope>

这失败并出现错误 - (405) Method not supported

一个显然在服务器上工作的 XML 示例是相同的,但标头的行是 POST /Request HTTP/1.1 而不是 POST http://blah/Request HTTP/1.1

我不知道这是否是问题,但我正在努力消除所有可能性。但是,我无法让 POST 请求 URI 是相对的而不是绝对的。有没有办法做到这一点?

以下是用于发送 XML 的代码。

Public Sub SendXML(ByVal file As String)
    Dim reader As New StreamReader(file)
    Dim data As String = reader.ReadToEnd()
    reader.Close()
    Dim request As HttpWebRequest = WebRequest.Create("http://blah/Request")
    request.Method = "POST"

    System.Net.ServicePointManager.Expect100Continue = False

    Dim bytes As Byte() = System.Text.Encoding.ASCII.GetBytes(data)
    request.ContentLength = bytes.Length

    Dim oStreamOut As Stream = request.GetRequestStream()
    oStreamOut.Write(bytes, 0, bytes.Length)
    oStreamOut.Close()

    Dim response As HttpWebResponse = request.GetResponse()

End Sub

405 - Method Not Allowed HttpWebRequest的请求在此询问

【问题讨论】:

    标签: vb.net post httpwebrequest http-headers


    【解决方案1】:

    关注HTTP Error 405 Method not allowed

    POST 方法经常会出现 405 错误。您可能正在尝试 在网站上引入某种输入形式,但不是所有的 ISP 允许处理表单所需的 POST 方法。

    所有 405 错误都可以追溯到 Web 服务器的配置和 管理对网站内容的访问的安全性,因此应该 您的 ISP 很容易解释。

    【讨论】:

    • 正如我上面所说的,我已经获得了一个可以工作的文件,并且显然第三方服务器确实接受了 POST 请求。
    • 标记为答案,因为我们为服务器提供了错误的 IP,它被设置为接受来自我们母公司而不是我们自己的 POST 请求。他们多次确认我们使用了正确的 IP,直到最终他们意识到这是错误的。
    猜你喜欢
    • 1970-01-01
    • 2011-10-06
    • 2011-01-08
    • 1970-01-01
    • 2012-01-31
    • 2011-07-14
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    相关资源
    最近更新 更多