|
POST запрос, что не так? | ☑ | ||
---|---|---|---|---|
0
НеПапоКарло
23.10.19
✎
17:30
|
Имеем запрос:
POST /asup_rus/WebServiceLoadDistr/Service_for_otgr.asmx HTTP/1.1 Host: asup.konti.com Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "https://asup.konti.com/HelloWorld" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <HelloWorld xmlns="https://asup.konti.com/"> </soap:Body> </soap:Envelope> Код в 1С: Соединение = Новый HTTPСоединение("asup.konti.com",,,); ТекстФайл = Новый ТекстовыйДокумент; ТекстФайл.ДобавитьСтроку("POST /asup_rus/WebServiceLoadDistr/Service_for_otgr.asmx HTTP/1.1"); ТекстФайл.ДобавитьСтроку("Content-Type: text/xml; charset=utf-8"); ТекстФайл.ДобавитьСтроку("Content-Length: length"); ТекстФайл.ДобавитьСтроку(ТекстXML); ТекстФайл.Записать(ФайлТелаЗапроса, КодировкаТекста.UTF8); ФайлТелаЗапроса = ПолучитьИмяВременногоФайла(); ФайлРезультата = ПолучитьИмяВременногоФайла(); ТекстФайл.Записать(ФайлТелаЗапроса, КодировкаТекста.UTF8); Соединение.ОтправитьДляОбработки(ФайлТелаЗапроса, "/asup_rus/WebServiceLoadDistr/Service_for_otgr.asmx", ФайлРезультата); При отправке из 1С пишет ошибку: Ошибка при вызове метода контекста (ОтправитьДляОбработки): Ошибка доступа к файлу '/asup_rus/WebServiceLoadDistr/Service_for_otgr.asmx' |
|||
1
Tonik992
23.10.19
✎
17:33
|
Первый раз вижу 3 параметра в ОтправитьДляОбработки()
|
|||
2
Ёпрст
23.10.19
✎
18:00
|
(0) а там точно такой синтаксис ?
ОтправитьДляОбработки(<HTTPЗапрос>, <ИмяВыходногоФайла>, <Источник>, <АдресРесурса>, <Заголовки>) |
|||
3
VS-1976
23.10.19
✎
18:03
|
Ошибка доступа к файлу
Это означает что нет доступа к скрипту. Проверь тупо в IE доступ к ресурсу "руками". |
|||
4
VS-1976
23.10.19
✎
18:04
|
Соединение = Новый HTTPСоединение("asup.konti.com",,,);
У тебя доступ тупо по HTTP? Точно не нужно по HTTPS |
|||
5
Tonik992
23.10.19
✎
18:06
|
(4) Это не ошибка доступа к файлу.
Это он неверно использует процедуру ОтправитьДляОбработки() Там 2 параметра. https://forum.infostart.ru/forum9/topic152774/ |
|||
6
VS-1976
23.10.19
✎
18:08
|
(5) Я уже посмотрел. Там через HTTPЗапрос... В общем товарищь не умеет их готовить походу...
|
|||
7
pechkin
23.10.19
✎
18:31
|
но зачем соап руками обрабатывать? может лучше через веб сервис?
|
|||
8
Сияющий в темноте
23.10.19
✎
18:41
|
(7)а потом в параметрах будет то,что 1с послать не может.
|
|||
9
palsergeich
23.10.19
✎
19:02
|
(7) потому что 1С не поурывает 100% стандарта SOAP, и собирать руками приходитсячаще, чем хотелось бы
|
|||
10
palsergeich
23.10.19
✎
19:02
|
(9) Ну по крайей мере я надеюсь чтьо у автора причина только в этом, а не потому что лень)
|
|||
11
palsergeich
23.10.19
✎
19:06
|
(0) ЭЭЭ ты и заголовки пост запроса в текст запроса запихнул?)
|
|||
12
palsergeich
23.10.19
✎
19:07
|
ТекстФайл.ДобавитьСтроку("POST /asup_rus/WebServiceLoadDistr/Service_for_otgr.asmx HTTP/1.1");
ТекстФайл.ДобавитьСтроку("Content-Type: text/xml; charset=utf-8"); ТекстФайл.ДобавитьСтроку("Content-Length: length"); это заголовки и они не сюда записываются и не так |
|||
13
palsergeich
23.10.19
✎
19:15
|
Эта штука плаформой добавляется сама.
POST /asup_rus/WebServiceLoadDistr/Service_for_otgr.asmx HTTP/1.1 Эти штуки добавляются при заполнении коллекции Заголовки Новый HTTPЗапрос(<АдресРесурса>, <Заголовки>) ТекстФайл.ДобавитьСтроку("Content-Type: text/xml; charset=utf-8"); ТекстФайл.ДобавитьСтроку("Content-Length: length"); |
|||
14
palsergeich
23.10.19
✎
19:19
|
Соединение = Новый HTTPСоединение("asup.konti.com",,,);
Заголовки = новый соответствие; Заголовки.Вставить("Content-Type", "charset=utf-8"") Запрос = Новый HTTPЗапрос("/asup_rus/WebServiceLoadDistr/Service_for_otgr.asmx", Заголовки); Запрос.УстановитьтелоИзСтроки(ТекстXML); HTTPответ = Соединение.ОтправитьДляОбработки(Запрос); Заголовок Content-Length ставится платформой самостоятельно и крайне не рекомендую пытаться его устанавливать самостоятельно. |
|||
15
palsergeich
23.10.19
✎
19:21
|
(14) Там в синтакс помошнике прекрасный пример есть, А тут идет изобретение очередного лисапеду
|
|||
16
palsergeich
23.10.19
✎
19:40
|
Заголовки = новый соответствие;
Заголовки.Вставить("SOAPAction", "https://asup.konti.com/HelloWorld"); Заголовки.Вставить("Content-Type", "charset=utf-8"") // хотя странно почему не application/xml |
|||
17
НеПапоКарло
24.10.19
✎
09:52
|
palsergeich, большое спасибо.
Но к сожалению конструкция "Новый HTTPЗапрос" не доступна на платформе 8.1. |
|||
18
Ёпрст
24.10.19
✎
10:00
|
(17) делай тогда через winhttpreqest и не парься
|
|||
19
dezss
24.10.19
✎
10:03
|
(17) Пришел узнать насколько здесь люди умеют мысли читать?))))
|
|||
20
НеПапоКарло
24.10.19
✎
10:09
|
Ресурс "/asup_rus/WebServiceLoadDistr/Service_for_otgr.asmx" закрыт логином и паролем. Подскажите каким образом правильно будет в запросе прописать логин и пароль?
|
|||
21
Ёпрст
24.10.19
✎
10:14
|
(20) либо через строку соединения, либо через заголовки
|
|||
22
oleg_km
24.10.19
✎
10:16
|
(20) Все зависит от того, каким способом реализована авторизация. Если стандартным, то может даже можно в HTTPСоединение прописать
|
|||
23
Tonik992
24.10.19
✎
10:56
|
(17)
8.1 платформа.. за что? |
|||
24
palsergeich
24.10.19
✎
11:17
|
(17) то есть о том что платформа 81 я должен был телепатически догадаться?(
|
|||
25
Bober
24.10.19
✎
15:58
|
(0) (17)
если это 8.1, то попробуй использовать параметр заголовки как соотвествие из примера (16): Соединение = Новый HTTPСоединение("asup.konti.com"); Заголовки = Новый Соответствие; Заголовки.Вставить("Content-Type", "text/xml; charset=utf-8"); Заголовки.Вставить("SOAPAction", "https://asup.konti.com/HelloWorld"); ФайлТелаЗапроса = ПолучитьИмяВременногоФайла(); ТекстФайл = Новый ТекстовыйДокумент; ТекстФайл.УстановитьТекст(ТекстXML); ТекстФайл.Записать(ФайлТелаЗапроса, КодировкаТекста.UTF8); ФайлРезультата = ПолучитьИмяВременногоФайла(); Соединение.ОтправитьДляОбработки(ФайлТелаЗапроса, "/asup_rus/WebServiceLoadDistr/Service_for_otgr.asmx", ФайлРезультата, Заголовки); |
|||
26
НеПапоКарло
25.10.19
✎
12:58
|
В итоге сделал через MSXML2, вариант через Новый HTTPСоединение не смог добиться чтобы в итоговом запросе 1С 8.1 отправляла: "Authorization:", 1С отправляла "Proxy-Authorization:"
Функция ОтправитьHttpPost(ЗапросXML, СтруктураОбмена, ВариантОтправки) MSXML = Новый COMОбъект("MSXML2.XMLHTTP"); ИмяСервера = "https://asup.konti.com/" + ВариантОтправки; АдресСервиса = "https://asup.konti.com/asup_rus/WebServiceLoadDistr/Service_for_otgr.asmx"; Хост = "http://asup.konti.com"; MSXML.open("POST", АдресСервиса, 0); MSXML.setRequestHeader("Host", Хост); MSXML.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); MSXML.setRequestHeader("SOAPAction", ИмяСервера); MSXML.setRequestHeader("Authorization", "Basic dfdsl;fkdsl;fkfsdl;fdsf"); Логин:Пароль - закодирован Base64 MSXML.setRequestHeader("Content-Length", "length"); MSXML.send(ЗапросXML); ОтветПолучен = Ложь; Для НомерЦикла = 1 по 100 Цикл Если MSXML.readyState > 3 Тогда ОтветПолучен = Истина; Прервать; КонецЕсли; КонецЦикла; Если ОтветПолучен Тогда Возврат MSXML.responseXML.xml Иначе Возврат Неопределено; КонецЕсли; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |