Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Обмен данными с http сервером / 17 сообщений из 17, страница 1 из 1
25.08.2015, 21:11
    #39035968
Шаман
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными с http сервером
Всем доброго времени суток и мирного неба над головой!
Уважаемые форумчане снова нужна Ваша помощь.
Имеется удаленный сервер, куда необходимо отправлять XML файлы, а затем получить от него ответ (тоже в XML).
Из инструкции:
Отправить запрос в УТМ (универсальный транспортный модуль) с использованием команды вида:
curl -F ''xml_file=@client.xml'' http: //localhost:8080/opt/in/QueryPartner

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

Список запросов, отправленных на сервер, можно получить командой вида:
curl -X GET http: //localhost:8080/opt/in
В ответ на эту команду УТМ возвращает список запросов.

Подскажите пожалуйста, как запустить эти команды из VBA:
curl -F ''xml_file=@client.xml'' http: //localhost:8080/opt/in/QueryPartner
curl -X GET http: //localhost:8080/opt/in
...
Рейтинг: 0 / 0
25.08.2015, 22:02
    #39035981
Шаман
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными с http сервером
Немного "подпилив" примеры из других тем, получил ответ с сервера с помощью команды

Dim s As New WinHttp.WinHttpRequest
url = " http://localhost:8080/opt/in"
Debug.Print url
s.Open "GET", url
s.Send
Debug.Print ReturnStr
...
Рейтинг: 0 / 0
26.08.2015, 09:21
    #39036102
Шаман
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными с http сервером
Посмотрев на свежую голову вчерашний вопрос, понял что не в том направлении копал.
Правильнее будет так:
Имеется транспортный модуль (ТМ), который сам отправляет/получает запросы с сервера. Надо только ТМ отдавать команды.
Пробую запустить через командную стоку
Shell "cmd" & "curl - X GET http: //localhost:8080/opt/in", vbNormalFocus или
Shell "cmd" & "curl -F ''xml_file=@client.xml'' http: //localhost:8080/opt/in/QueryPartner
ничего не получается. Что делаю не так?
...
Рейтинг: 0 / 0
26.08.2015, 21:30
    #39036889
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными с http сервером
Шаман,
1.создайте каталог на диске С: - "BatFile"
2. в этом каталоге создайте два файла "put.bat" и "get.bat" (можно воспользоваться Блокнотом (если в файлах не будет текста с русскими буквами))
3. содержимое файла "put.bat" :

cd c:\полный_путь_к_файлу_curl
curl -F ''xml_file=@client.xml'' http: //localhost:8080/opt/in/QueryPartner

(не надо ли в опции "xml_file" указывать полный путь к файлу "@client.xml" ?)
4. содержимое файла "get.bat" :

cd c:\полный_путь_к_файлу_curl
curl -X GET http: //localhost:8080/opt/in

5. в VBA вызывать выполнение этих файлов через Shell

Shell "cmd.exe /c c:\BatFile\put.bat"
Shell "cmd.exe /c c:\BatFile\get.bat"
...
Рейтинг: 0 / 0
26.08.2015, 22:27
    #39036926
Шаман
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными с http сервером
guest_rusimport, Спасибо тебе ОГРОМНОЕ добрый человек!!!
Сейчас попробую. О результате обязательно отпишусь.
...
Рейтинг: 0 / 0
26.08.2015, 23:05
    #39036973
Шаман
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными с http сервером
guest_rusimport, Приношу извинения за доставленные хлопоты.
Вариант с BAT файлами замечательный, но транспортный модуль его не воспринял.
Я не правильно предположил ход действий.
Вернувшись к первоначальному варианту и использовав пример от mds_world 7477874
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Dim s As New WinHttp.WinHttpRequest
Dim ReturnStr As String, FileNumber, url

url = "http://localhost:8080/opt/in"
Debug.Print url
s.Open "GET", url
s.Send
ReturnStr = s.ResponseText
Debug.Print Len(ReturnStr)
FileNumber = FreeFile
Open "D:\1.xml" For Append Access Write As #FileNumber
Print #FileNumber, ReturnStr
Close #FileNumber


удалось получить ответ с сервера в виде XML файла.
Теперь осталось разобраться, как аналогичным способом загрузить xml файл на сервер.
В качестве исходника использую этот пример 15205874 , но что-то мозгов не хватает преобразовать его под свои нужды.
Подскажите, КАК загрузить этот файл?
...
Рейтинг: 0 / 0
26.08.2015, 23:25
    #39037007
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными с http сервером
Шаман,
попробуй как-то так 1415697
...
Рейтинг: 0 / 0
26.08.2015, 23:47
    #39037048
Шаман
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными с http сервером
guest_rusimport,
Этот вариант рассматривал изначально, но так и не понял где прописать загружаемый файл и адрес сервера.
Вообще с написанием (редактированием) функций у меня проблема. Бубен не настроен )
Поэтому.... Стыдно конечно, но приходится обращаться за помощью.
...
Рейтинг: 0 / 0
26.08.2015, 23:55
    #39037053
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными с http сервером
Шаман,
ну , я так понимаю для твоего случая в последнем примере
FileNameClient="c:\полный путь к файлу client.xml''
FileNameServer=" http://localhost:8080/opt/in/QueryPartner"

в чем тут затруднения?
...
Рейтинг: 0 / 0
27.08.2015, 00:17
    #39037085
Шаман
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными с http сервером
guest_rusimport,
Если я правильно понял, код должен выглядеть следующим образом:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Dim http As WinHttpRequest
Dim myStr() As Byte
Dim nFile As Integer
Dim nLen As Long
FileNameClient = "C:\client.xml"
FileNameServer = "http://localhost:8080/opt/in/QueryPartner"
  
Set http = New WinHttpRequest
nFile = FreeFile
nLen = FileLen(FileNameClient)
  
ReDim myStr(1 To nLen)
Open FileNameClient For Binary As #nFile
Get #nFile, 1, myStr
Close nFile
http.Open "PUT", FileNameServer, False
http.Send myStr
...
Рейтинг: 0 / 0
27.08.2015, 00:25
    #39037090
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными с http сервером
Шаман,
ну , если у вас файл client.xml лежит в корневом каталоге диска C: и удаленный сервер это - localhost, то -да :)
...
Рейтинг: 0 / 0
27.08.2015, 00:54
    #39037111
Шаман
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными с http сервером
Блин, что то файл так и не отправляется. Но это наверное я где-то накосячил.
Завтра на свежую голову буду разбираться.

guest_rusimport , даже не знаю, что бы я делал Ваших советов.
Еще раз СПАСИБО за помощь и выдержку.
...
Рейтинг: 0 / 0
27.08.2015, 06:50
    #39037150
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными с http сервером
ШаманБлин, что то файл так и не отправляется. Но это наверное я где-то накосячил.
Завтра на свежую голову буду разбираться.

guest_rusimport , даже не знаю, что бы я делал Ваших советов.
Еще раз СПАСИБО за помощь и выдержку.

так вот прям "молча" и не отправляет или всё же ошибка какая-то появляется?
...
Рейтинг: 0 / 0
27.08.2015, 08:27
    #39037166
Шаман
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными с http сервером
guest_rusimport,
После выполнения команды захожу в log файл.
Когда запрос проходит успешно появляется событие:
Код: xml
1.
2.
2015-08-27 08:20:57,642 DEBUG es.programador.http.ClientDocumentServlet - Запрос на получение списка всех исходящих документов
2015-08-27 08:20:57,643 DEBUG es.programador.transport.ClientDocumentDAO - Получения списка накладных для отправки в статусах: 


А при отправке файла никакие события не отражены. Хотя, согласно инструкции:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Документ зарегистрирован успешно, если в журнале УТМ отображаются следующие события: 
Получения тикета c [uuid=ab43d5e0-855c-4b54-b1d8-ddeb34d1d110] в статусах: 1 
2015-03-26 13:17:23,014 INFO  es.programador.transport.schedule.WSReciever - Тип документа - 
квитанция на чек (Cheque) с UUID [ab43d5e0-855c-4b54-b1d8-ddeb34d1d110] 
2015-03-26 13:17:23,016 DEBUG es.programador.transport.TicketDAO - Отмечаем тикет с 
идентификатором ab43d5e0-855c-4b54-b1d8-ddeb34d1d110 об отправке: статус=2 
2015-03-26 13:17:23,017 INFO  es.programador.transport.schedule.WSReciever - Анализ 
содержимого документов с сервера успешно завершен 
2015-03-26 13:17:23,017 DEBUG es.programador.transport.schedule.WSReciever - Удаление 
временного файла: C:\transport-1.0.3-b498_8080\bin\..\xml\ws\9ee1bfe8-3727-4d00-bfff-
dfdf7c938998 
Журнал (лог) УТМ расположен по пути папка_УТМ/logs/transport_info.log 



Сейчас проверяю сам файл на предмет ошибок. Возможно при малейшем несовпадении ТМ блокирует отправку.
...
Рейтинг: 0 / 0
27.08.2015, 12:11
    #39037321
Шаман
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными с http сервером
Уважаемый guest_rusimport , еще раз СПАСИБО за помощь.
После установки cURL version 7.43.0 http://www.confusedbycode.com/curl/
заработал предложенный Вами вариант с BAT файлами.
...
Рейтинг: 0 / 0
26.12.2015, 23:52
    #39138718
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными с http сервером
Шаманзаработал предложенный Вами вариант с BAT файлами.

А как при этом поймать ответ в досовском окне и сохранить в файл ???
Ну и вообще как успехи на этом поприще?
...
Рейтинг: 0 / 0
07.04.2016, 16:15
    #39210370
Шаман
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными с http сервером
vmag А как при этом поймать ответ в досовском окне и сохранить в файл ???
Ну и вообще как успехи на этом поприще?
Давно не заходил. Работы много. Может немного запоздало, но все же отвечу.
В BAT файле после команды добавляем " > C:\Test.txt" и ответ сохраняется в этом файле.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Обмен данными с http сервером / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]