Страница: 1 |
Страница: 1 |
Вопрос: Как очуществить??
Добавлено: 01.04.05 02:10
Автор вопроса: Ratu.R
Вобщем есть таккая проблема, нужно поочередно отправить на одрес www.X.ru операции на выполнение, т.е. открываетм этот адрес и потом даем указания типа
1) адресс + операция1
2) адресс + операция2 и.т.д.
Как такое осуществить????
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 01.04.05 09:56
GET/POST запрос ?
Номер ответа: 2
Автор ответа:
Ratu.R
Вопросов: 8
Ответов: 19
Профиль | | #2
Добавлено: 02.04.05 01:05
POST. Так как осуществить это кто-нить знает???
Номер ответа: 3
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #3
Добавлено: 02.04.05 02:05
Можешь воспользоваться API или winsocks'а, или wininet'а... Можешь вопользоваться контролами, WinSock || Inet... К сожалению у меня они не установлены, и точного названия...
Номер ответа: 4
Автор ответа:
Ratu.R
Вопросов: 8
Ответов: 19
Профиль | | #4
Добавлено: 02.04.05 02:30
Ну что использовать их надо, это понятно, но как?? мне нужен пример кода.. КТО-нИТЬ МОЖЕТ ПОМОЧЬ!!!!!
Номер ответа: 5
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #5
Добавлено: 02.04.05 03:19
в Первом случае пиши см. HTTP протокол и пиши запрос...
во втором случае есть OpenUrl кажись, к нему прилагается MSDN
Номер ответа: 6
Автор ответа:
Ratu.R
Вопросов: 8
Ответов: 19
Профиль | | #6
Добавлено: 02.04.05 13:28
Так как?? Напишите кто-нить пример кода. Я пробовал вот так, использовал 3 ф-ции
Private Declare Function InternetOpen
Private Declare Function InternetOpenUrl
Private Declare Function CloseHandle
Но как при помощи их передавать запросы поочередно??
Номер ответа: 7
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #7
Добавлено: 02.04.05 14:37
Вообще я говорил о ocx'е... но раз ты решил через api, то:
'***************************************************************************************
'* Написано: 13.01.2005 (Team HomeWork) *
'* e-mail: sne_pro@mail.ru *
'***************************************************************************************
Private Declare Function GlobalAlloc Lib "kernel32.dll" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function GlobalFree Lib "kernel32.dll" (ByVal hMem As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal lpszAgent As String, ByVal dwAccessType As Long, ByVal lpszProxy As String, ByVal lpszProxyBypass As String, ByVal dwFlags As Long) As Long
Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternet As Long, ByVal lpszServerName As String, ByVal nServerPort As Long, ByVal lpszUserName As String, ByVal lpszPassword As String, ByVal dwService As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Declare Function InternetSetStatusCallback Lib "wininet.dll" (ByVal hInternet As Long, ByVal lpfnInternetCallback As Long) As Long
Private Declare Function HttpOpenRequest Lib "wininet.dll" Alias "HttpOpenRequestA" (ByVal hConnect As Long, ByVal lpszVerb As String, ByVal lpszObjectName As String, ByVal lpszVersion As String, ByVal lpszReferrer As String, ByVal lplpszAcceptTypes As String, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Declare Function HttpSendRequest Lib "wininet.dll" Alias "HttpSendRequestA" (ByVal hRequest As Long, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal lpOptional As Long, ByVal dwOptionalLength As Long) As Long
Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByRef lpBuffer As Any, ByVal dwNumberOfBytesToRead As Long, ByRef lpdwNumberOfBytesRead As Long) As Integer
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByRef hInternet As Long) As Boolean
Private Type prWinInetContext
dwExitFlag As Long
dwRetCode As Long
dwErrCode As Long
End Type
Private Const GMEM_FIXED As Long = &H0
Private Const GMEM_MOVEABLE As Long = &H2
Private Const GMEM_ZEROINIT As Long = &H40
Private Const GPTR As Long = (GMEM_FIXED Or GMEM_ZEROINIT)
Private Const GHND As Long = (GMEM_MOVEABLE Or GMEM_ZEROINIT)
Private Const INTERNET_FLAG_ASYNC As Long = &H10000000
Private Const INTERNET_FLAG_KEEP_CONNECTION As Long = &H400000
Private Const INTERNET_SERVICE_HTTP As Long = 3
Private Const INTERNET_DEFAULT_HTTP_PORT As Long = 80
Private Const INTERNET_STATUS_CLOSING_CONNECTION As Long = 50
Private Const INTERNET_STATUS_CONNECTED_TO_SERVER As Long = 21
Private Const INTERNET_STATUS_CONNECTING_TO_SERVER As Long = 20
Private Const INTERNET_STATUS_CONNECTION_CLOSED As Long = 51
Private Const INTERNET_STATUS_HANDLE_CLOSING As Long = 70
Private Const INTERNET_STATUS_HANDLE_CREATED As Long = 60
Private Const INTERNET_STATUS_NAME_RESOLVED As Long = 11
Private Const INTERNET_STATUS_RECEIVING_RESPONSE As Long = 40
Private Const INTERNET_STATUS_REDIRECT As Long = 110
Private Const INTERNET_STATUS_REQUEST_COMPLETE As Long = 100
Private Const INTERNET_STATUS_REQUEST_SENT As Long = 31
Private Const INTERNET_STATUS_RESPONSE_RECEIVED As Long = 41
Private Const INTERNET_STATUS_SENDING_REQUEST As Long = 30
Private Const szAgent As String = "VBNet OfflineClient VB6"
Private Const szSvrName As String = "www.vbnet.ru"
Private sOutBuffer As String
Private szRequest As String
'--------------------------------------------------------------------------------
' Проект : OfflineClient
' Процедура : SendRequest
' Описание : Собственно, отправка запроса GET через WinInet
' Кем создан : SNE
' Дата-Время : 13.01.2005-23:25:33
'
' Параметры : sServerName - [in] Имя сервера
' sRequest - [in] Запрос
' ErrCode - [out] Ошибка
'--------------------------------------------------------------------------------
Public Function SendRequest(ByVal sRequest As String, _
Optional ByRef ErrCode As Long) As String
Dim hInternet As Long, _
hConnect As Long, _
hRequest As Long
Dim dwContext As prWinInetContext
sOutBuffer = vbNullString
szRequest = sRequest & vbNullChar
hInternet = InternetOpen(szAgent, 0&, 0&, 0&, INTERNET_FLAG_ASYNC)
If Not hInternet = 0& Then
' Ставим CallBack
Call InternetSetStatusCallback(hInternet, AddressOf InternetCallbackFunc)
' открываем HTTP сессию
hConnect = InternetConnect(hInternet, szSvrName, INTERNET_DEFAULT_HTTP_PORT, 0&, 0&, INTERNET_SERVICE_HTTP, 0&, VarPtr(dwContext))
If Not hConnect = 0& Then
hRequest = HttpOpenRequest(hConnect, "GET", szRequest, 0&, 0&, 0&, INTERNET_FLAG_KEEP_CONNECTION, VarPtr(dwContext))
If Not hRequest = 0& Then
Call HttpSendRequest(hRequest, vbNullString, 0&, 0&, 0&
' Псевдо-синхронность
Do Until dwContext.dwExitFlag = vbNull
DoEvents
Call Sleep(0&
Loop
SendRequest = sOutBuffer
Call InternetCloseHandle(hRequest)
End If
Call InternetCloseHandle(hConnect)
End If
Call InternetCloseHandle(hInternet)
End If
ErrCode = dwContext.dwErrCode
End Function
' §§§§§§§§§§§§§§§§§§§§§§§§§§ CallBack §§§§§§§§§§§§§§§§§§§§§§§§§§
'--------------------------------------------------------------------------------
' Проект : OfflineClient
' Процедура : InternetCallbackFunc
' Описание : Для асинхронного режима в WinInet
' Кем создан : SNE
' Дата-Время : 13.01.2005-23:34:57
'--------------------------------------------------------------------------------
Private Sub InternetCallbackFunc(ByVal hInternet As Long, ByVal dwContext As Long, _
ByVal dwInternetStatus As Long, _
ByVal pbStatusInformation As Long, _
ByVal dwStatusInformationLength As Long)
Dim lng As Long, _
szTmpBuffer As String * &H100
Dim stContext As prWinInetContext
If Not dwContext = 0& Then Call CopyMemory(stContext, ByVal dwContext, Len(stContext))
stContext.dwRetCode = dwInternetStatus
Select Case dwInternetStatus
Case Is = INTERNET_STATUS_REQUEST_COMPLETE
Call CopyMemory(lng, ByVal pbStatusInformation + 4&, 4& ' dwError
stContext.dwErrCode = lng
If lng = 0& Then
Call CopyMemory(lng, ByVal pbStatusInformation, 4& ' bool value (is suses = true)
If lng = 1& Then
Do Until InternetReadFile(hInternet, ByVal szTmpBuffer, Len(szTmpBuffer), lng) = 0&
If lng = 0& Then
stContext.dwExitFlag = vbNull
Exit Do
Else
sOutBuffer = sOutBuffer & VBA.Left$(szTmpBuffer, lng)
End If
Loop
End If
End If
End Select
If Not dwContext = 0& Then Call CopyMemory(ByVal dwContext, stContext, Len(stContext))
End Sub
Номер ответа: 8
Автор ответа:
Ratu.R
Вопросов: 8
Ответов: 19
Профиль | | #8
Добавлено: 02.04.05 15:09
Так ты же мне GET запрос написал, а там нужен POST
Номер ответа: 9
Автор ответа:
Ratu.R
Вопросов: 8
Ответов: 19
Профиль | | #9
Добавлено: 02.04.05 22:07
Мот ктонить напишет код, для отправки POST запросоов, всего их 8 штук.... ОЧЕНЬ НУЖНО, ПОМОГИТЕ!!!!
Номер ответа: 10
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #10
Добавлено: 02.04.05 23:12
постучи к DaSharm'у в асю, думаю, за пару десятков wmz он поможет тебе
Номер ответа: 11
Автор ответа:
Ratu.R
Вопросов: 8
Ответов: 19
Профиль | | #11
Добавлено: 03.04.05 00:01
sne
Ты говорил через ocx можно это сделать, плизз напиши....
Номер ответа: 12
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #12
Добавлено: 03.04.05 12:23
1. Млин, те какая разница GET запрос или POST !? Ты вот мне можешь сказать и чем это они различаются так что уж прям не взаимозаменяемы!?
2. Сделай небольшое услилие и набери в поисковике свой вопрос, уверяю тебя, те будет предоставлено множество вариантов... Причем если поменяешь тут:
GET на POST, напишешь чуть по-иному запрос и чуть по-другому вызовешь HttpOpenRequest, о чем я думаю ты позаботишься сам, то ты получишь что тебе надо...
Почему ты думаешь что тебе дадут все готовое, и ткнут носом... приложи хоть небольшие усилия, а ?
Мне делать больше нечего Извини но мне:
1. Неохото переустанавливать студию, т.к. у меня ocx'ы эти не установлены.
2. У мня особо нет времени