Отправка данных через http

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Отправка данных через http

Сообщение XairOn » 18.06.2005 (Сб) 17:01

Здравствуйте. Мне нужно отправить некторые данные (строку обычную) из текстбокса скрипту через http. Т.е. мне нужно сделать в программе отправку так, как если бы я отправлял её из браузера (имеется ввиду не адресная строка, а любая форма, например тот же текстбокс... как у нас на форуме для отправки сообщения, вобщем сообщения отправляются обработчику, так и мне нужно сдлать по сути то же самое, только из своей программы). Как это сделать?

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 18.06.2005 (Сб) 17:13

http это отпрака гипер текста, куда ты его собрался через http отправлять?
ХЎ

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 18.06.2005 (Сб) 18:25

можно поюзать XMLHTTP из XML 4.0

XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Сообщение XairOn » 18.06.2005 (Сб) 19:44

d3drm писал(а):http это отпрака гипер текста, куда ты его собрался через http отправлять?

Ну например, отвечая каждый раз на какой-либо вопрос на этом форуме, всё что ты напишешь в текстбоксе, передаётся на сервер PHP скрипту, это программа обрабатывающая данные ну и т.д. и т.п. в нашем случае это - posting.php (находится здесь: http://bbs.vbstreets.ru/posting.php)... мне нужно сделать, что бы из текстбокса в моей проге, данные передавались точно такому же обрабатывающему скрипту. Всё как в браузере, разница лишь в том, что всё должно из моей проги идти.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 18.06.2005 (Сб) 19:55

как на счет ie контрола?
ХЎ

XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Сообщение XairOn » 18.06.2005 (Сб) 20:37

d3drm писал(а):как на счет ie контрола?

хотелось бы без него обойтись... в крайнем случае через winsock как-нибудь отправить... но как???

Jenizix
Географ
Географ
Аватара пользователя
 
Сообщения: 545
Зарегистрирован: 20.04.2004 (Вт) 20:52
Откуда: Москва

Сообщение Jenizix » 18.06.2005 (Сб) 21:08

WinSock рулит! :D
Коннектишся к 80 порту сервера, шлеш ему запрос, ну а он тебе ответ шлет...
Вот тут посмотри: http://bbs.vbstreets.ru/viewtopic.php?t=16119
Ушел в себя, вернусь не скоро...

Если вам нужно сделать прозрачной только форму, а контролы на ней нет, то вам сюда!!!

Jenizix
Географ
Географ
Аватара пользователя
 
Сообщения: 545
Зарегистрирован: 20.04.2004 (Вт) 20:52
Откуда: Москва

Сообщение Jenizix » 18.06.2005 (Сб) 21:11

Примерна так:
Код: Выделить всё
Option Explicit

Private Sub Form_Load()
Winsock1.RemoteHost = "google.com"
Winsock1.RemotePort = 80
Winsock1.Connect
End Sub

Private Sub Winsock1_Connect()
Winsock1.SendData "GET /search?q=help+me%2C+i%27m+lost HTTP/1.1" & vbCrLf
Winsock1.SendData "Host: www.google.com" & vbCrLf
Winsock1.SendData vbCrLf
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim s As String
Winsock1.GetData s
MsgBox s
End Sub
Ушел в себя, вернусь не скоро...

Если вам нужно сделать прозрачной только форму, а контролы на ней нет, то вам сюда!!!

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 19.06.2005 (Вс) 7:27

2Jenizix: Да причем тут это. Чел хочет отправить данные из "браузера" к серваку :roll:

Вот распечатка того что браузер отправляет при отсылки posting.php:
POST путь HTTP/1.1:
Код: Выделить всё

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 9.0

Host: localhost:82

Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1

Accept-Language: ru,en;q=0.9

Accept-Charset: windows-1252, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1

Referer: http://localhost:82/путь

Connection: Keep-Alive, TE

TE: deflate, gzip, chunked, identity, trailers

Content-Type: application/x-www-form-urlencoded
http://head.imho.ru/click.ng/impt=imp&place=vbstreets600x90&id=140405
Content-Length: 309



subject=&addbbcode18=%23444444&addbbcode20=12&helpbox=%CF%EE%E4%F1%EA%E0%E7%EA%E0%3A+%CC%EE%E6%ED%EE+%E1%FB%F1%F2%F0%EE+%EF%F0%E8%EC%E5%ED%E8%F2%FC+%F1%F2%E8%EB%E8+%EA+%E2%FB%E4%E5%EB%E5%ED%ED%EE%EC%F3+%F2%E5%EA%F1%F2%F3&message=dasd&attach_sig=on&notify=on&mode=reply&t=17214&post=%CE%F2%EF%F0%E0%E2%E8%F2%FC
الفيجوال بيسك الرابح

XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Сообщение XairOn » 19.06.2005 (Вс) 16:48

2GM, ага... так значит мне HTTP запрос поймать надо и его отправлять на сервак... а это всё таки через winsock делать надо??? Как Jenizix говорил?

Jenizix
Географ
Географ
Аватара пользователя
 
Сообщения: 545
Зарегистрирован: 20.04.2004 (Вт) 20:52
Откуда: Москва

Сообщение Jenizix » 19.06.2005 (Вс) 22:47

GM, все у меня правильно и то что надо...
Ушел в себя, вернусь не скоро...

Если вам нужно сделать прозрачной только форму, а контролы на ней нет, то вам сюда!!!

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 20.06.2005 (Пн) 6:52

2Jenizix, XairOn
нужно отправить некторые данные (строку обычную) из текстбокса скрипту через http.

Уже предпологается метод post, а не GET :!: . Проблема видимо состоит не в том как отправить, а что отправлять.
2XairOn: Слови запрос и разберись в формате, например из posting.php, я выбросил, то что мне оказалоь не нужным, и вот что получилось:
Код: Выделить всё
POST /posting.php HTTP/1.1:
Host: localhost:82
Content-Type: application/x-www-form-urlencoded
Content-Length: 309
<br>
<br>
subject=&addbbcode18=%23444444&addbbcode20=12&helpbox=%CF%EE%E4%F1%EA%E0%E7%EA%E0%3A+%CC%EE%E6%ED%EE+%E1%FB%F1%F2%F0%EE+%EF%F0%E8%EC%E5%ED%E8%F2%FC+%F1%F2%E8%EB%E8+%EA+%E2%FB%E4%E5%EB%E5%ED%ED%EE%EC%F3+%F2%E5%EA%F1%F2%F3&message=dasd&attach_sig=on&notify=on&mode=reply&t=17214&post=%CE%F2%EF%F0%E0%E2%E8%F2%FC

После <br><br>, идут переменные в формате: название=значение, и все отделенные амперсандом.
الفيجوال بيسك الرابح

XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Сообщение XairOn » 20.06.2005 (Пн) 8:21

GM писал(а):Проблема видимо состоит не в том как отправить, а что отправлять.

Ты не совсем прав, проблема как раз не столько в том, что отправлять, сколько в том, как отправлять. В том запросе, который ты нам тут показал всё ясно, но не ясно, как отправлять его??? А именно: это одна строка, или надо отправлять всё отдельно, разделяя vbCrLf ???

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 20.06.2005 (Пн) 10:38

Код: Выделить всё
    Dim objClientHTTP As MSXML2.XMLHTTP40
    Dim objServerHTTP As MSXML2.ServerXMLHTTP40
    #If KP_CLIENT_HTTP Then
        Dim objSrvHTTP As MSXML2.XMLHTTP40
    #Else
        Dim objSrvHTTP As MSXML2.ServerXMLHTTP40
    #End If
    Dim objXMLReceive As MSXML2.DOMDocument
    Dim s As String
    Dim b As String
    Dim lResolve As Long: lResolve = 30000&
    Dim lConnect As Long: lConnect = 30000&
    Dim lSend As Long: lSend = 15000&
    Dim lReceive As Long: lReceive = 30000&

        #If KP_CLIENT_HTTP Then
            Set objSrvHTTP = New MSXML2.XMLHTTP40
        #Else
130         Set objSrvHTTP = New MSXML2.ServerXMLHTTP40
131         objSrvHTTP.setTimeouts lResolve, lConnect, lSend, lReceive
        #End If

140 If mMain.UseProxy Then
        #If KP_DEBUG Then
150         LogInfo "================================="
160         LogInfo "ProxyServer: " & mMain.ProxyServer
170         LogInfo "ProxyUser: " & mMain.ProxyUser
180         LogInfo "ProxyPass: " & mMain.ProxyPass
190         LogInfo "================================="
        #End If
200     If mMain.ProxyUser = PROXYPRECONFIG Then
210         objSrvHTTP.setProxy SXH_PROXY_SET_PRECONFIG, mMain.ProxyServer
        Else
220         objSrvHTTP.setProxy SXH_PROXY_SET_PROXY, mMain.ProxyServer
230         objSrvHTTP.setProxyCredentials mMain.ProxyUser, mMain.ProxyPass
        End If
    End If
   
240     objSrvHTTP.Open "POST", CStr(URL), False
250     objSrvHTTP.setRequestHeader "Content-Type", ContentType ' "application/x-www-form-urlencoded"
260     If Len(UseSignature) > 0 Then
270         Signature = mHTTP.GetSignature(SendQuery, ErrCode, ErrDesc)
            #If KP_DEBUG Then
                LogInfo "Signature: " & Signature
                LogInfo "Signature: " & ErrCode & " " & ErrDesc
            #End If
            If ErrCode <> 0 Then
                GoTo lb_out
            End If
280         objSrvHTTP.setRequestHeader UseSignature, Signature
        End If
       
290     objSrvHTTP.send SendQuery

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 23.06.2005 (Чт) 22:21

XairOn писал(а):2GM, ага... так значит мне HTTP запрос поймать надо и его отправлять на сервак... а это всё таки через winsock делать надо??? Как Jenizix говорил?

Поймать? :shock:
А разве кто-то его шлёт?

XairOn писал(а):
GM писал(а):Проблема видимо состоит не в том как отправить, а что отправлять.

Ты не совсем прав, проблема как раз не столько в том, что отправлять, сколько в том, как отправлять. В том запросе, который ты нам тут показал всё ясно, но не ясно, как отправлять его??? А именно: это одна строка, или надо отправлять всё отдельно, разделяя vbCrLf ???

Это несколько строк, разделённых vbCrLf. Послать всё это за один вызов SendData или за несколько - нет никакой разницы.
Изображение


Вернуться в Visual Basic 1–6

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

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

    TopList