Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Получение информации с сайта Добавлено: 06.10.06 17:23  

Автор вопроса:  webwoolf | ICQ: 333612475 
День добрый!

Помогите разобраться в ситуации: по определенному адресу лежит php файл ну допустим так: htttp://www.blablabla.com/index.php

В этом файле - форма для ввода информации, которую можно не вводить а передать вручную. Допустим htttp://www.blablabla.com/index.php?x=2,y=2 .

После выполнения скрипта, на страницу будет выведена цифра 4 ( скрипт банально перемножил x и y ).

Вопрос как послать параметры, вроде бы ясен, хотя и без тонкостей, а вот как получить этот результат, выведенный на страницу - не понятно. Может кто подскажет идею, а если еще и код повесит - буду безмерно благодарен!

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 i0ngunn3r



Вопросов: 11
Ответов: 30
 Профиль | | #1 Добавлено: 06.10.06 22:17
Через винсок, например.

Ссылки по теме:
http://www.codenet.ru/webmast/php/HTTP-POST.php
http://www.opennet.ru/docs/RUS/perl_obzor/socket.html
http://www.softtime.ru/scripts/post_copy.php
(ничего, что для php/perl ;))
--
Шлешь через винсок запрос на сервер blablabla.com (порт 80 (по умолчанию)) а-ля:

' frmmain.txtwsrequest - текстбокс, в котором будет находиться готовый HTTP-запрос post (это для упрощения и наглядности. Соблюдение 13+10 (vbcrlf) обязательно.

frmMain.txtWSRequest = _
"POST /index.php?x=2,y=2 HTTP/1.1" & vbCrLf & _
"Accept: */*" & vbCrLf & _
"Accept-Language: ru" & vbCrLf & _
"Content-Type: application/x-www-form-urlencoded" & vbCrLf & _
"Host: blablabla.com" & vbCrLf & _
"Content-Length: 0" & vbCrLf & _
"Connection: Keep-Alive" & vbCrLf & _
"cache-Control: no-cache" & vbCrLf

----------
А можно и так.
(точно не уверен, я сам еще полностью не разобрался, если честно :/)

frmMain.txtWSRequest = _
"POST index.php HTTP/1.1" & vbCrLf & _
"Accept: */*" & vbCrLf & _
"Accept-Language: ru" & vbCrLf & _
"Content-Type: application/x-www-form-urlencoded" & vbCrLf & _
"Host: blablabla.com" & vbCrLf & _
"Content-Length: $len" & vbCrLf & _
"Connection: Keep-Alive" & vbCrLf & _
"cache-Control: no-cache" & vbCrLf & vbCrLf & _
"x=2,y=2"

Только во втором случае не забудь указать правильное значение content-length (можно с помощью replace).
content-len в моем втором примере будет равно 7 (Значение con-len можно узнать в ВБ с помощью len(всё после "no-cache" и двух CrLfов, т.е. только "x=2,y=2";)
====================
Затем, через винсок, отправляем все что появилось в txtwsrequest.
====================

Sub WS_SendRequest()
On Error Resume Next
frmMain.txtWS = ""
With frmMain.wsMain
  While .State <> sckClosed
    .Close
  Wend
  .Connect "blablabla.com", 80
  Do
    DoEvents
  Loop While .State <> sckConnected
  .SendData frmMain.txtWSRequest
End With
End Sub


txtWS на главной форме (оба текстбокса, txtws и txtwsrequest должны быть с multiline=true - чтоб наглядней было ;)) будет возвращать ответ с сервера (там будет html-страничка с ответом на твое выражение. Ненужный html-код и прочую фигню можно будет обрезать с помощью Left/Mid/Right и InStr/Replace.

====================
Итак, на главной форме (frmMain) у нас:
• txtWS и txtWSRequest (желательно сделай большие, чтоб удобно все смотреть/редактировать можно было)
• винсок (wsMain)
• По желанию - кнопка, отправляющая запрос из txtWSRequest на сервер
====================

Private Sub wsMain_DataArrival(ByVal bytesTotal As Long)
Dim sData As String, tmp As String, autosend_sec As Integer
wsMain.GetData wsData
txtWS = txtWS & wsData & vbCrLf
End Sub


При получении инфы винсок будет выводить ее в txtWS.

===================
Исходники моей проги, откуда я все это взял :)
Может, понадобится..

http://surfnet.dl.sourceforge.net/sourceforge/demaker/dEM105-src.zip

P.S.: Сорри за огромный пост.. :\

Ответить

Номер ответа: 2
Автор ответа:
 i0ngunn3r



Вопросов: 11
Ответов: 30
 Профиль | | #2 Добавлено: 06.10.06 22:21
А, да. Разницы, php это или нет, нету - в txtWS палюбе будет страница с привычным html-кодом :)

Ответить

Номер ответа: 3
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #3 Добавлено: 07.10.06 20:26
Также post запрос умеет делать WebBrowser.

Ответить

Номер ответа: 4
Автор ответа:
 Bombardier



ICQ: 42305746 

Вопросов: 2
Ответов: 67
 Web-сайт: alexander.tsioka.ru
 Профиль | | #4
Добавлено: 13.10.06 13:59
а можно через API, вот эти функции помогают:
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByRef hInet As Long) As Long
Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Declare Function InternetCheckConnection Lib "wininet.dll" Alias "InternetCheckConnectionA" (ByVal lpszUrl As String, ByVal dwFlags As Long, ByVal dwReserved As Long) As Long
Private Declare Function InternetAttemptConnect Lib "wininet.dll" (ByVal dwReserved As Long) As Long

вот например реализация:
Sub GetServerInfo()
Dim sBuffer As String
Dim sAgent As String
Dim hOpen As Long
Dim hFile As Long
Dim ret As Long
Dim LogonPath As String
    sAgent = "VB HTTP Agent 1.0"
    LogonPath = "www.ru"
    sBuffer = Space(1024)
    hOpen = InternetOpen(sAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
    hFile = InternetOpenUrl(hOpen, LogonPath, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&;)
    InternetReadFile hFile, sBuffer, 1024, ret
    InternetCloseHandle hFile
    InternetCloseHandle hOpen
    sBuffer = Trim(sBuffer)
End Sub

Ответить

Номер ответа: 5
Автор ответа:
 webwoolf



ICQ: 333612475 

Вопросов: 9
Ответов: 21
 Профиль | | #5 Добавлено: 18.10.06 14:59
Спасибо всем за помощь, разобрался !

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам