powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Обмен данными с http сервером
17 сообщений из 17, страница 1 из 1
Обмен данными с http сервером
    #39035968
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток и мирного неба над головой!
Уважаемые форумчане снова нужна Ваша помощь.
Имеется удаленный сервер, куда необходимо отправлять 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
Обмен данными с http сервером
    #39035981
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немного "подпилив" примеры из других тем, получил ответ с сервера с помощью команды

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
Обмен данными с http сервером
    #39036102
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрев на свежую голову вчерашний вопрос, понял что не в том направлении копал.
Правильнее будет так:
Имеется транспортный модуль (ТМ), который сам отправляет/получает запросы с сервера. Надо только ТМ отдавать команды.
Пробую запустить через командную стоку
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
Обмен данными с http сервером
    #39036889
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шаман,
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
Обмен данными с http сервером
    #39036926
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimport, Спасибо тебе ОГРОМНОЕ добрый человек!!!
Сейчас попробую. О результате обязательно отпишусь.
...
Рейтинг: 0 / 0
Обмен данными с http сервером
    #39036973
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Обмен данными с http сервером
    #39037007
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шаман,
попробуй как-то так 1415697
...
Рейтинг: 0 / 0
Обмен данными с http сервером
    #39037048
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimport,
Этот вариант рассматривал изначально, но так и не понял где прописать загружаемый файл и адрес сервера.
Вообще с написанием (редактированием) функций у меня проблема. Бубен не настроен )
Поэтому.... Стыдно конечно, но приходится обращаться за помощью.
...
Рейтинг: 0 / 0
Обмен данными с http сервером
    #39037053
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шаман,
ну , я так понимаю для твоего случая в последнем примере
FileNameClient="c:\полный путь к файлу client.xml''
FileNameServer=" http://localhost:8080/opt/in/QueryPartner"

в чем тут затруднения?
...
Рейтинг: 0 / 0
Обмен данными с http сервером
    #39037085
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Обмен данными с http сервером
    #39037090
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шаман,
ну , если у вас файл client.xml лежит в корневом каталоге диска C: и удаленный сервер это - localhost, то -да :)
...
Рейтинг: 0 / 0
Обмен данными с http сервером
    #39037111
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин, что то файл так и не отправляется. Но это наверное я где-то накосячил.
Завтра на свежую голову буду разбираться.

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

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

так вот прям "молча" и не отправляет или всё же ошибка какая-то появляется?
...
Рейтинг: 0 / 0
Обмен данными с http сервером
    #39037166
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Обмен данными с http сервером
    #39037321
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый guest_rusimport , еще раз СПАСИБО за помощь.
После установки cURL version 7.43.0 http://www.confusedbycode.com/curl/
заработал предложенный Вами вариант с BAT файлами.
...
Рейтинг: 0 / 0
Обмен данными с http сервером
    #39138718
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаманзаработал предложенный Вами вариант с BAT файлами.

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


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