Http Request

  • Автор темы valmont
  • Дата начала
V

valmont

Доброго дня.
Требуется на ls (может лучше java) отправлять данные (текст/файлы) post запросом.
вот отрывок:
Код:
	vbCrLf = Chr(13) & Chr(10) 
strBoundary = "MyUniqueGranitsa" 
strBody = "--" & strBoundary & vbCrLf 
strBody = strBody & "Content-Disposition: form-data; name=""fieldName""; filename=""file.dat""" & vbCrLf 
strBody = strBody & "Content-Type: text/plain" & vbCrLf & vbCrLf 
strBody = strBody & "данные в файле" & vbCrLf 
strBody = strBody & "--" & strBoundary & "--" 

lngLength = Len(strBody) 

strHttp = "POST /base.nsf/upload?createdocument HTTP/1.1" & vbCrLf 
strHttp = strHttp & "Host: acme.com" & vbCrLf 
strHttp = strHttp & "Content-Length: " & lngLength & vbCrLf & vbCrLf 
strHttp = strHttp & strBody 


Set xhr = CreateObject("WinHttp.WinHttpRequest.5.1")		 

xhr.Open "POST", "http://acme.com/base.nsf/upload?createdocument", False 
xhr.SetRequestHeader "Content-Type", "multipart/form-data; boundary=" & strBoundary 
xhr.Send strHttp

после отработки Domino в консоль ругается на bad request...

не пойму в чём проблема.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
здесь есть многое
рекомендую java часть (т.к. не нужно привлекать сторонние компоненты и шарить по МСтехнотам)

Добавлено: а подробный код для пост запроса, как сделать подобно примеру выше, с использованием биджа (LS2J), я описывал здесь , в вашем случае - ни строчки на java писать не придется ;)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
xhr.Open "POST", "http://acme.com/base.nsf/upload?createdocument", False
только сейчас обратил внимание..., что это за "фокус"
- типа попытка домину заставить создать док с полями, одно из кот. включает файл ? ;)
этот метод врядли пройдет, в таком виде
 
V

valmont

Да, спасибо. Но с get проблем нет, также нет и с простым post (application/x-www-form-urlencoded).
Мне нужно передать файл, с этим проблема... :(

Добавлено:
только сейчас обратил внимание..., что это за "фокус"
- типа попытка домину заставить создать док с полями, одно из кот. включает файл ? ;)
этот метод врядли пройдет, в таком виде

Сработает нормально, да, это именно "фокус" ;) и при том успешный, например прекрасно работает с ajax.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
код кот. работает с аяксом есть?

Добавлено: вот как доминошные формы отрабатывают аплоад
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
теоретически, если нет upload контрола, на форме, можно попытаться запостить mime в поле типа РТ, но как это отработает домина - я не знаю
 
V

valmont

Он не поможет, там создаётся псевдо форма с полями и делается post по этому (?createdocument) урлу. Уже сам браузер формирует заголовок и тело запроса.
Если в заголовке
Код:
xhr.SetRequestHeader "Content-Type", "multipart/form-data; boundary=" & strBoundary
уберу ; boundary=" & strBoundary то запрос проходит, но документ создаётся пустым.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
Он не поможет, там создаётся псевдо форма с полями и делается post по этому (?createdocument) урлу
эт почемуэто - очень поможет, надо запрос посмотреть в дебаге у ФФ или Хрома и создать подобный
 
V

valmont

сам запрос смотрю через какойто httpAnalyser, по основным заголовоком всё ок, по телу запроса тоже

Добавлено:
код кот. работает с аяксом есть?

Добавлено: вот как доминошные формы отрабатывают аплоад
да, спасибо, про эту магию вкурсе.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
сам запрос смотрю через какойто httpAnalyser, по основным заголовоком всё ок, по телу запроса тоже
если с аяксом все проходит - то и так должно пройти, я аякс оттрейсить предлагал
 
V

valmont

получлиось

Добавлено: поменял activex объект с WinHTT.WinHTTPRequest.5.1 на MSXML2.ServerXMLHTTP.4.0 ;)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
лучеб java, почеловечьи...
вот всегда грю - использование МС объектов - ССЗБ
собсно ваш пример - прямое подтверждение
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!