0

次の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)メソッドはサポートされていません

サーバー上で明らかに機能する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でのリクエストに応えてここで尋ねられました-メソッドは許可されていませんHttpWebRequest

4

1 に答える 1

0

のHTTPエラー405メソッドは許可されていません

POSTメソッドで405エラーが発生することがよくあります。Webサイトにある種の入力フォームを導入しようとしている可能性がありますが、すべてのISPがフォームの処理に必要なPOSTメソッドを許可しているわけではありません。

405のエラーはすべて、Webサーバーの構成と、Webサイトのコンテンツへのアクセスを管理するセキュリティに起因するため、ISPが簡単に説明できるはずです。

于 2012-04-05T14:29:13.087 に答える