Вопрос № 18198: Текст Вашего вопроса:
Здравствуйте,
Возник такой вопрос:
VBA:
Dim str as STRING
...
...'здесь заполняем чем нибудь строковую переменную
Вопрос:
На сервере в интернете лежит php-скрипт, как из программы на VBA передать...Вопрос № 18230: Уважаемые эксперты! При инсталляции VB спрашивает:
Launch BackOffice Installation Wizard
Visual Source Safe Server
SNA Server
Что это?...
Вопрос № 18198
Текст Вашего вопроса:
Здравствуйте,
Возник такой вопрос:
VBA:
Dim str as STRING
...
...'здесь заполняем чем нибудь строковую переменную
Вопрос:
На сервере в интернете лежит php-скрипт, как из программы на VBA передать ему значение строковой переменной методом POST?
При ответе укажите пожалуйста какие References должны быть подключены к проекту VBA.
Вопрос отправлен: 17.02.2005, 09:35
--------------------------------------------------------------------------------
Отвечает: Licvidator (>>)
Здравствуйте, Антонов Максим Владимирович!
Юзаем Winsock:
Private Sub W1_Connect()
Dim postString As String
postString = "/имя_принимающего_скрипта?somevar=" & postString
W1.SendData postString
End Sub
Чтобы вызвать метод Connect():
dim IP as string, Port as string
IP="ип_адрес"
Port="80"
W1.Close
W1.connect IP, Port
Соответственно, если ответ от сервера принимать не надо, то на этом можно остановится. В противном случае используйте метод W1_DataArrival, при этом учитывая, что ответ как правило идет кусками, а не весь сразу.
Запомните, сам по себе винсок никаких хидеров (заголовков) не шлет, поэтому согласно рфц на сокеты, сервер не обязан отвечать на запросы, если хидеры неправильно указаны.
Если что-то осталось непонятным, обращайтесь:)
Ответ отправлен: 18.02.2005, 15:57
Все таки я ничего не понимаю
Если можно приведите работающий пример
Отправим на хост http://a-les.ru/counter/count.php
строку $text (это php) именно методом POST и получим текст возвращаемый сервером.
БУДУ ОЧЕНЬ БЛАГОДАРЕН.
(приведенный адрес - просто считает кол-во слов в тексте ... (просто для примера)
для общего развития можно привести и отправку методом GET
(все это из VBA (Word,Excel))
P.S. да еще ...... известно только имя хоста IP-динамический
Отправлен: 13.03.2005, 00:59
Вопрос задал: Антонов Максим Владимирович (статус: Посетитель)
Всего ответов отправлено: 1
Отвечает: Licvidator
Здравствуйте, Антонов Максим Владимирович!
Добавляем кнопку, добавляем винсок...
Private Host As String, Port As Integer, ServerAnswer As String
Private Sub Command1_Click()
Host = "a-les.ru"
Port = 80
Winsock1.Close
Winsock1.Connect Host, Port
End Sub
Private Sub Winsock1_Close()
If ServerAnswer = "" Then Exit Sub 'эта строка нужна, чтобы не было зацикливаний
MsgBox ServerAnswer
ServerAnswer = ""
End Sub
Private Sub Winsock1_Connect()
Dim text As String, postString As String
postString = "simple text"
text = "/counter/count.php?text=" & postString
Winsock1.SendData GetHeader(Host, text)
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim temp As String
If bytesTotal <> 0 Then
Winsock1.GetData temp
ServerAnswer = ServerAnswer & temp
End If
End Sub
Private Function GetHeader(sHost As String, sPostString As String) As String
Dim a As String, b As Long
b = InStr(1, sPostString, "?")
a = Left(sPostString, b - 1)
sPostString = Right(sPostString, Len(sPostString) - b)
GetHeader = "POST " & a & " HTTP/1.0" & vbCrLf & _
"Host: " & sHost & ":" & Port & vbCrLf & _
"Referer: Localhost" & vbCrLf & _
"User-Agent: MyProgramm" & vbCrLf & _
"Content-Type: application/x-www-form-urlencoded" & vbCrLf & _
"Content-Length: " & Len(sPostString) & vbCrLf & vbCrLf & _
sPostString
End Function
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
MsgBox "Error!" & vbCrLf & Description, vbCritical, "Error!"
End Sub
Ответ отправил: Licvidator (статус: Профессор)
Отправлен: 14.03.2005, 12:12
Вопрос № 18230
Уважаемые эксперты! При инсталляции VB спрашивает:
Launch BackOffice Installation Wizard
Visual Source Safe Server
SNA Server
Что это?
Отправлен: 13.03.2005, 17:06
Вопрос задал: Александр А.А. (статус: Посетитель)
Всего ответов отправлено: 1
Отвечает: Miklucho
Здравствуйте, Александр А.А.!
2-й и 3-й для групповой разработки приложений, а 1-й не знаю.
Ответ отправил: Miklucho (статус: Студент)
Отправлен: 14.03.2005, 05:37 Оценка за ответ: 4