Http Request

valmont

Well-known member
27.12.2004
64
0
#1
Доброго дня.
Требуется на 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
6 583
269
#2
здесь есть многое http://www.nsftools.com/blog/blog-05-2007.htm
рекомендую java часть (т.к. не нужно привлекать сторонние компоненты и шарить по МСтехнотам)

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

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#3
xhr.Open "POST", "http://acme.com/base.nsf/upload?createdocument", False
только сейчас обратил внимание..., что это за "фокус"
- типа попытка домину заставить создать док с полями, одно из кот. включает файл ? ;)
этот метод врядли пройдет, в таком виде
 

valmont

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

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

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#6
теоретически, если нет upload контрола, на форме, можно попытаться запостить mime в поле типа РТ, но как это отработает домина - я не знаю
 

valmont

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

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#8
Он не поможет, там создаётся псевдо форма с полями и делается post по этому (?createdocument) урлу
эт почемуэто - очень поможет, надо запрос посмотреть в дебаге у ФФ или Хрома и создать подобный
 

valmont

Well-known member
27.12.2004
64
0
#9
сам запрос смотрю через какойто httpAnalyser, по основным заголовоком всё ок, по телу запроса тоже

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

Добавлено: вот как доминошные формы отрабатывают аплоад http://second-ext.inttrust.ru/Site/itforum...97?OpenDocument
да, спасибо, про эту магию вкурсе.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#10
сам запрос смотрю через какойто httpAnalyser, по основным заголовоком всё ок, по телу запроса тоже
если с аяксом все проходит - то и так должно пройти, я аякс оттрейсить предлагал
 

valmont

Well-known member
27.12.2004
64
0
#11
получлиось

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

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#12
лучеб java, почеловечьи...
вот всегда грю - использование МС объектов - ССЗБ
собсно ваш пример - прямое подтверждение