У меня проблема при попытке отправить POST
запрос. Способ отправки выглядит так:
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
При запуске я получаю указанную выше ошибку. Через Fiddler я вижу, что запрос выглядит так:
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>
Теперь, глядя на это, я подозревал, что это произошло из-за того, что сервер не принимает POST
сообщений. Но некоторые другие чтения предполагают, что URI http://blah/Request
был сгенерирован с помощью прокси и должен быть /Request
, поэтому строка должна читать POST /Request HTTP/1.1
Так какова общая причина этого? А если проблема с прокси, как это сортируется?
Как указано ниже, я создал новый вопрос для более конкретного запроса. Изменение абсолютного URI на относительный в заголовке HTTP POST