Как отправить POST запрос, получить ответ и закончить соед.

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

KingManiya
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 16.07.2009 (Чт) 19:20

Как отправить POST запрос, получить ответ и закончить соед.

Сообщение KingManiya » 16.07.2009 (Чт) 19:35

Всё что я нашел это
Код: Выделить всё
Imports System.IO
Imports System.Net
Imports System.Text
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim myHttpWebRequest As HttpWebRequest = HttpWebRequest.Create("www.sayt.ru")
        'myHttpWebRequest.Proxy = New WebProxy("127.0.0.1", 8888)
        myHttpWebRequest.Method = "POST"
        myHttpWebRequest.ContentType = "application/x-www-form-urlencoded"
        Dim sQueryString As String = "lg=" & Player.Text & "&pw=" & Password.Text & "&act=2" ' Параметры POST запроса.
        Dim ByteArr As Byte() = Encoding.GetEncoding(1251).GetBytes(sQueryString)
        myHttpWebRequest.ContentLength = ByteArr.Length()
        myHttpWebRequest.GetRequestStream().Write(ByteArr, 0, ByteArr.Length)

        Dim myHttpWebResponse As HttpWebResponse = myHttpWebRequest.GetResponse()
        Dim myStreamReader As New StreamReader(myHttpWebResponse.GetResponseStream, Encoding.Default)
        TextBox1.Text = myStreamReader.ReadToEnd()
    End Sub
End Class

Так вот после нажатия кнопки приходит ответ и всё вроде бы хорошо, но если второй раз нажать на кнопку то появляеться ошибка. Как я понял это из за незактыртого соеденения. Так вот как его закрыть что бы вновь и вновь отправлять запросы.

P.S.
Тут используеться HttpWebRequest. Но я где то видел смутную инфу о WebRequest. Через него тоже вроде можно отослать post запрос. Не могли бы вы если что покозать пример и на нем.

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Как отправить POST запрос, получить ответ и закончить соед.

Сообщение Williams » 17.07.2009 (Пт) 10:49

Можно еще WebCleint.UploadValues.
И вы думаете, что вас оставят в живых после прочтения этого поста?

KingManiya
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 16.07.2009 (Чт) 19:20

Re: Как отправить POST запрос, получить ответ и закончить соед.

Сообщение KingManiya » 17.07.2009 (Пт) 11:01

А поподробней можно? Что это и как этим пользоваться?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Как отправить POST запрос, получить ответ и закончить соед.

Сообщение MIT » 17.07.2009 (Пт) 11:05

Тебе HttpWebRequest вполне может помочь.

Вот только не пойму в чем проблема, у меня нижеследующий код ошибок не вызывает.
Код: Выделить всё
Imports System.IO
Imports System.Net
Imports System.Text
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim myHttpWebRequest As HttpWebRequest = HttpWebRequest.Create("http:\\www.yandex.ru")
        'myHttpWebRequest.Proxy = New WebProxy("127.0.0.1", 8888)
        myHttpWebRequest.Method = "POST"
        myHttpWebRequest.ContentType = "application/x-www-form-urlencoded"
        Dim sQueryString As String = "lg=" & 1 & "&pw=" & 2 & "&act=2" ' Параметры POST запроса.
        Dim ByteArr As Byte() = Encoding.GetEncoding(1251).GetBytes(sQueryString)
        myHttpWebRequest.ContentLength = ByteArr.Length()
        myHttpWebRequest.GetRequestStream().Write(ByteArr, 0, ByteArr.Length)

        Dim myHttpWebResponse As HttpWebResponse = myHttpWebRequest.GetResponse()
        Dim myStreamReader As New StreamReader(myHttpWebResponse.GetResponseStream, Encoding.Default)
        TextBox1.Text = myStreamReader.ReadToEnd()
    End Sub
End Class


Автор, дай реальный код, который у тебя вызывает ошибку.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

KingManiya
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 16.07.2009 (Чт) 19:20

Re: Как отправить POST запрос, получить ответ и закончить соед.

Сообщение KingManiya » 17.07.2009 (Пт) 12:25

Я и дал его.
Я нажимаю на кнопку. Получаю данные. Вроде бы всё хорошо. Нажимаю кнопку второй раз и тут ошибка. коротко "сервер разорвал соединение".

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Как отправить POST запрос, получить ответ и закончить соед.

Сообщение MIT » 17.07.2009 (Пт) 12:36

Сколько я не нажимал - ни одной ошибки не возникло. Что за сервер-то хоть, сайт можешь назвать?
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

KingManiya
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 16.07.2009 (Чт) 19:20

Re: Как отправить POST запрос, получить ответ и закончить соед.

Сообщение KingManiya » 17.07.2009 (Пт) 12:54

http://www.tanchiki.ru/online/ver2/uplmap.php


Так. Проблему решил.
keepalive=false
Спасибо за попытку помочь.

Вот код для людей у которых может возникнуть ошибка с post

Код: Выделить всё
Imports System.IO
Imports System.Net
Imports System.Text
Public Class Form1
    Dim query As String
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        query = "lg=" & Player.Text & "&pw=" & Password.Text ' Параметры POST запроса.
        TextBox1.Text = PostData(query)
    End Sub

    Public Function PostData(ByVal data As String) As String
        Dim request As HttpWebRequest = HttpWebRequest.Create("http://www.server.ru/") ' Сервер для подключения
        request.Method = "POST"
        request.ContentType = "application/x-www-form-urlencoded"
        request.KeepAlive = False
        request.ContentLength = data.Length

        Dim writer As New StreamWriter(request.GetRequestStream(), Encoding.Default)
        writer.Write(data)
        writer.Close()

        Dim stream As Stream = request.GetResponse().GetResponseStream()
        Dim reader As New StreamReader(stream, Encoding.Default)
        Dim response As String = reader.ReadToEnd

        Return response
    End Function
End Class


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 39

    TopList