Ваш POST, похоже, полностью недействителен. Предполагается, что данные POST должны быть закодированы (т.е. как multipart / form-data) и использовать правильный тип содержимого (то есть application / x-www-form-urlencoded) с правильной кодировкой и границами и т. Д. Вы просто отправляете серверу кусок текста, и я не удивлен, что он вылетает.
Я не уверен на 100%, что VB делает за кулисами, но эта страница MSDN предлагает вам установить тип контента для поддерживаемого метода, и вам, вероятно, понадобится Content-Disposition: form-data
в заголовках также. Я нашел пример , который делает это и добавляет границы MIME:
string FileData = "this is test file data\r\n"; // test data to send.
StringBuilder DataString = new StringBuilder();
DataString.Append(dataBoundary + "\r\n");
//This sends the viewstate info
DataString.Append("Content-Disposition: form-data; name=" + HiddenValue
+ "\r\n"
+ dataBoundary + "\r\n");
DataString.Append("Content-Disposition: form-data; name=" + "\"" +
"File1" +
"\"" +
"; filename=" + "\"" + "TestFile3.txt" + "\"" + "\r\n");
DataString.Append("Content-Type: text/plain\r\n\r\n");
DataString.Append(FileData);
DataString.Append(dataBoundary + "\r\n");
DataString.Append("Content-Disposition: form-data; name=" + "\"" +
"Submit1" +
"\"" + "\r\n\r\n" + "Upload\r\n" + dataBoundary + "--\r\n");
Этот пример эмулирует загрузку файлового поля.
Для более простой версии вы можете использовать request.ContentType = "application/x-www-form-urlencoded"
с данными в кодировке URL, такими как: Dim postData As String = "myURL=http%3A%2F%2Fexample.com%2Findex.php"
. Обратите внимание, что формат key=value
, и данные должны быть сначала закодированы в URL.
Я не уверен, что именно вам нужно, хотя многое зависит от того, что на самом деле ожидает удаленный сервер для имен форм и полей. Это также зависит от того, действительно ли сервер следует соответствующим стандартам HTML и RFC. Есть ли у вас рабочая HTML-форма для использования в качестве руководства для того, что ожидает сервер?