2012-04-05 63 views
0

我有以下POST請求:在HTTP POST頭相對改變絕對URI

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是相對的而不是絕對的。有沒有可以做這個的wat?

以下是用於發送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

回答

0

HTTP Error 405 Method not allowed

405錯誤通常使用POST方法產生。您可能會嘗試在網站上引入某種輸入表單,但不是所有ISP 都允許使用POST方法來處理表單。

所有的405個錯誤都可以追溯到Web服務器的配置和 安全控制訪問網站的內容,因此 應該很容易由您的ISP解釋。

+0

正如我上面所說,我已經提供了一個文件,可以工作和_apparently_第三方服務器不接受POST請求。 – anothershrubery 2012-04-05 14:33:28

+1

標記爲答案,因爲我們給服務器提供了錯誤的IP地址,它被設置爲接受來自我們母公司的POST請求,而不是我們自己。無數次他們證實我們正在使用正確的IP,直到最終他們意識到這是錯誤的。 – anothershrubery 2012-04-17 08:36:40