|
HTTP сервис и подключение к нему | ☑ | ||
---|---|---|---|---|
0
SMakcik
30.05.16
✎
15:45
|
Всем привет!
в конфигурации 1С я создал http сервис. Опубликовал его он видится все хорошо. при обращении к нему авторизация проходит без проблем и в журнале регистрации это видно. Ответ приходит пустой без каких либо ошибок. Но в базе никаких действий не делается. Подскажите где может крыться проблема? Текст подключения: Функция POSTЗапрос(ПараметрыЗапроса) Попытка //подключение к этому ПК Соединение = Новый HTTPСоединение("10.8.1.82", , "", ""); Исключение Возврат "Ошибка при создании HTTP соединения."; КонецПопытки; HTTPЗапрос = Новый HTTPЗапрос("R/hs/Sales/Write"); //HTTPЗапрос.Пара ПараметрЗапроса = "Date=20160530000000&TovarCod=ЦБ000045055&CharacteristicName=37&IDevision=001001001113&OrgINN=7704753941&SellingVid=ПродажаПростая&Count=1&Summa=1000&SummaWDisc=1000"; HTTPЗапрос.УстановитьТелоИзСтроки(ПараметрЗапроса, "windows-1251"); Ответ = ""; Попытка HTTPОтвет = Соединение.Записать(HTTPЗапрос);//Соединение.Записать(HTTPЗапрос, Ответ); Ответ = HTTPОтвет.ПолучитьТелоКакСтроку(); Исключение Возврат "Ошибка при соединении."; КонецПопытки; Возврат Ответ; КонецФункции |
|||
1
Fragster
гуру
30.05.16
✎
15:53
|
а на другой стороне что?
|
|||
2
Fragster
гуру
30.05.16
✎
15:53
|
Идут стрельбы. Дали автоматы, патроны, показали куда стрелять. Админ отстрелялся, подводят итоги. Мишень админа чистая. Командир: - ?. Админ, проверяя автомат: - С моей стороны пули вылетели. Проблемы у вас.
|
|||
3
SMakcik
30.05.16
✎
16:03
|
корневой URL: Sales
Шаблон: RegTransaction /{Date}/{TovarCod}/{CharacteristicName}/{IDevision}/{OrgINN}/{SellingVid}/{Count}/{Summa}/{SummaWDisc}/* Метод: Write Функция RegTransactionWrite(Запрос) Ответ = Новый HTTPСервисОтвет(200); СтруктураПараметров = ЗаполнитьСтруктуруПоДаннымЗапроса(Запрос); Если НЕ ЗарегистироватьТранзакцию(СтруктураПараметров) Тогда Ответ = Новый HTTPСервисОтвет(400); КонецЕсли; Возврат Ответ; КонецФункции |
|||
4
SMakcik
30.05.16
✎
16:04
|
Что тут еще может быть. Такое ощущение что он не может метод найти или параметры указываются не верно
|
|||
5
SMakcik
30.05.16
✎
16:16
|
Либо просто скажите как указывать основные параметры?
Как должна выглядеть строка соединения? |
|||
6
Fragster
гуру
30.05.16
✎
16:46
|
Сообщить(HTTPОтвет.КодСостояния)
|
|||
7
SMakcik
31.05.16
✎
13:09
|
КодСостояния = 404
|
|||
8
Fragster
гуру
31.05.16
✎
14:02
|
потому что /Sales/Write не подходит под шаблон /{Date}/{TovarCod}/{CharacteristicName}/{IDevision}/{OrgINN}/{SellingVid}/{Count}/{Summa}/{SummaWDisc}/*
|
|||
9
Fragster
гуру
31.05.16
✎
14:03
|
надо делать
/Sales/Write/20160530000000/ЦБ000045055/.... |
|||
10
4St
31.05.16
✎
14:27
|
(3) Под такие задачи больше подходят POST-запросы, но никак не GET.
|
|||
11
SMakcik
31.05.16
✎
14:51
|
(9) но так я и пишу. С этим немного разобрался. Лишние /* были в конце шаблон.
Теперь возвращает 405 ошибку |
|||
12
SMakcik
31.05.16
✎
14:53
|
а что значит GET и POST?
У меня стоит HTTP-метод любой |
|||
13
SMakcik
31.05.16
✎
14:55
|
Я так понимаю что нужно версию определить HTTP 1.1
|
|||
14
Fragster
гуру
31.05.16
✎
14:59
|
(11) используй HTTPСоединение.ВызватьHTTPМетод
|
|||
15
Fragster
гуру
31.05.16
✎
14:59
|
("GET",
|
|||
16
SMakcik
31.05.16
✎
15:08
|
т.е. вот так:
Соединение.ВызватьHTTPМетод("POST", HTTPЗапрос) возвращает 405 или Соединение.ВызватьHTTPМетод("GET", HTTPЗапрос) возвращает 404 Я правильно понимаю? |
|||
17
Fragster
гуру
31.05.16
✎
15:10
|
(16) новую версию кода напиши
|
|||
18
ДенисЧ
31.05.16
✎
15:11
|
(16) 404 - страница не найдена, 405 - "Как челобитную царю подаёшь, смерд??"
|
|||
19
SMakcik
31.05.16
✎
15:15
|
Попытка
Соединение = Новый HTTPСоединение("10.8.1.82", , "", ""); Исключение Возврат "Ошибка при создании HTTP соединения."; КонецПопытки; HTTPЗапрос = Новый HTTPЗапрос(" testcopyrozntest/hs/Sales"); ПараметрЗапроса = "20160530000000/ЦБ000045055/37/001001001113/1111111111/ПродажаПростая/1/1000/1000?IK=9997900000197"; HTTPЗапрос.УстановитьТелоИзСтроки(ПараметрЗапроса, "windows-1251"); Ответ = ""; Попытка HTTPОтвет = Соединение.ВызватьHTTPМетод("GET", HTTPЗапрос); Ответ = HTTPОтвет.ПолучитьТелоКакСтроку(); Исключение Возврат "Ошибка при соединении."; КонецПопытки; |
|||
20
SMakcik
31.05.16
✎
15:16
|
(18) так это то и понятно. По сути сейчас все правильно, но...
|
|||
21
SMakcik
31.05.16
✎
15:28
|
"Имя сервиса"/"имя публикуемой базы"/hs/"корневой URL"/параметры
Строка соединения такая? я правильно понимаю Просто еще не вижу как конечный запрос выглядет. Может слэш где-то пропустил |
|||
22
Fragster
гуру
31.05.16
✎
16:21
|
HTTPЗапрос = Новый HTTPЗапрос(" testcopyrozntest/hs/Sales/"+ПараметрЗапроса);
установить тело из строки - в топку |
|||
23
Fragster
гуру
31.05.16
✎
16:22
|
или даже /Sales/Write/ + ПараметрЗапроса
|
|||
24
SMakcik
31.05.16
✎
16:48
|
Не фига все также 404 ошибка.
Но вот что странно: HTTPОтвет = Соединение.ВызватьHTTPМетод("GET", HTTPЗапрос); дает 404 ошибку а HTTPОтвет = Соединение.Записать(HTTPЗапрос); зависает напрочь |
|||
25
SMakcik
31.05.16
✎
16:57
|
Просто даже если выполнить в браузере то тоже ошибка. Укажу наверно явно метод GET в опреации
|
|||
26
SMakcik
31.05.16
✎
17:00
|
хотя по логике в ВызватьМетод мы явно и даем понять что используй GET
|
|||
27
SMakcik
31.05.16
✎
17:05
|
Вот так интересно. когда создается запрос, то при получении Тела оно равно Неопределено
|
|||
28
Fragster
гуру
31.05.16
✎
18:14
|
404 значит, что вызываемый адрес не найден, т.е. нет сервиса, у которого шаблон соответствует запросу
|
|||
29
SMakcik
01.06.16
✎
11:14
|
Ну как нет. Все перепроверил. Шаблон подкорректировал
|
|||
30
SMakcik
01.06.16
✎
11:27
|
Скачал Fiddler попробую попарсить
|
|||
31
Diversus
01.06.16
✎
11:33
|
Вопрос.
А можно ли при работе через HTTP-сервис избавиться от авторизации? Грубо говоря, есть ссылка, которую хочется открывать из письма и при открытии этой ссылки из письма менять данные в базе 1С. Авторизация не нужна так как будут передаваться какие нибудь GUID-ы, которые не подобрать, да и пользователю это не нужно особо. Кто нибудь решал подобную задачу? |
|||
32
Fragster
гуру
01.06.16
✎
11:34
|
(31) в vrd файле поправить строку подключения, указав в ней логин и пароль
|
|||
33
Diversus
01.06.16
✎
11:35
|
(32) А без правки vrd?
|
|||
34
Diversus
01.06.16
✎
11:36
|
Хотелось бы проще как-то. И кстати интересно чего галочку не добавили в платформу. Ведь такие задачи сплошь и рядом.
|
|||
35
Fragster
гуру
01.06.16
✎
11:36
|
(33) написать проксирующий сервис
|
|||
36
SMakcik
01.06.16
✎
16:18
|
Вопрос закрыт.
Поменял названия на русские внутри самого сервиса RegTransaction = ЗарегистрироватьПродажу Write = Записать И все. Не знаю может какой-то глюк, может резервные слова какие-то или еще что. Но вышел на это через создание второго тестового сервиса как обрисовано в инете. Сначала с двумя параметрами, потом с четырмя. потом девять поставил. Все работало Потом поменял названия параметров путем копирования с первого сервиса - все работает Потом тело процедуры обработки поменял. Все работало. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |