1. Zixxx 11.06.19 11:00 Сейчас в теме

Armtek. Сервис поиска

Не получается получить нужный ответ от сервиса
В ответе написано что не установлена сбытовая организация
Вероятно неправильно передаю параметры в тело запроса
Тестирование сервиса возвращает результат http://ws.armtek.ru/test/test/generate/Ws_search/search_post
Сверял запросы в Fiddler
Параметры в тело запроса передавал структурой и строкой (которую брал по аналогии из Fiddler)

Может кто увидит ошибку или подскажет что неправильно делаю?

	СтруктураПараметров = Новый Структура;
	СтруктураПараметров.Вставить("VKORG",				"5000");
	СтруктураПараметров.Вставить("KUNNR_RG",			"id");
	СтруктураПараметров.Вставить("PIN",					"C110");
	
	// Сериализатор
	ЗаписьJSON			= Новый ЗаписьJSON;
	ПараметрыЗаписиJSON	= Новый ПараметрыЗаписиJSON(, Символы.Таб);
	ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
	ЗаписатьJSON(ЗаписьJSON, СтруктураПараметров);
	СтрокаJSON = ЗаписьJSON.Закрыть();
	
	// POST
	HTTPЗапрос = Новый HTTPЗапрос();
	
	АдресРесурса	= "/api/ws_search/search?format=json";
					
	HTTPЗапрос.АдресРесурса = АдресРесурса;
	
	Соединение		= Новый HTTPСоединение("ws.armtek.ru", , "email", "password", Новый ИнтернетПрокси, ,);
	
	HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON);
	
	ОтветHTTP		= Соединение.ОтправитьДляОбработки(HTTPЗапрос);
	
	Тело			= ОтветHTTP.ПолучитьТелоКакСтроку();
	
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(Тело);
	Данные = ПрочитатьJSON(ЧтениеJSON);
Показать
Ответы
Избранное Подписка Сортировка: Древо
2. Isa816 19 11.06.19 11:30 Сейчас в теме
Нужно описание сервиса, пока вижу что то не передаются параметры авторизации, они вроде должны передаваться в заголовках.
Соединение = Новый HTTPСоединение("ws.armtek.ru", , "email", "password", Новый ИнтернетПрокси, ,); Вот тут вы используете прокси? Оно у вас есть? или это попытка передать логин и пароль в запрос?
Так же можно попробовать переделать вот это
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON);
Не всегда сервисы это понимают, можно попробовать через временныйФайл и уже его отправить для обработки.
5. Zixxx 11.06.19 11:50 Сейчас в теме
(2) Прокси можно убрать, смысл от этого не поменяется
Описание сервиса здесь: http://ws.armtek.ru/?page=service&alias=search
6. Isa816 19 11.06.19 12:00 Сейчас в теме
(5) Способ авторизации: Basic Authentication
Basic Authentication — клиент указывает свой логин и пароль для для получения доступа к REST сервису. Логин и пароль передаются по сети как незашифрованный текст кодированный простым Base64 и может быть легко декодирован любым пользователем.
Нужно логин и пароль шифровать через Base64 и скорее всего передавать в Head вот только непонятно куда, но точно не через прокси (прокси лучше убрать если он не используется, он нужен только в том случае если подключение ВАШЕГО интернета идёт через прокси сервер с логином и паролем.
Данные пользователя:
username = email
password = password
Вот эти хеды можно попробовать передать Вот пример
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization","AccessToken "+ Authorization);
Заголовки.Вставить("X-User-Authorization","Basic "+ XUserAuthorization);
Заголовки.Вставить("Content-Type", "application/json;charset=UTF-8");

HTTPЗапрос = Новый HTTPЗапрос(Запрос, Заголовки);

Это первое.
А второе нужно смотреть на передачу данных,
Array
(
[VKORG] => 0000
[KUNNR_RG] => 000
[PIN] => 000
[BRAND] =>
[QUERY_TYPE] =>
[PROGRAM] =>
[KUNNR_ZA] =>
[VBELN] =>
)
Вот тут указан массив, а вы в JSON передаете структуру. Возможно в этом ошибка
9. Zixxx 11.06.19 13:34 Сейчас в теме
(6) Если использую заголовки, то пишет ошибка авторизации пользователя

Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization","AccessToken "+ email );
Заголовки.Вставить("X-User-Authorization","Basic "+ password);
Заголовки.Вставить("Content-Type", "application/json;charset=UTF-8");

Но мне кажется дело не в авторизации. Так как в моем примере он уже ругается на незаполненный параметр, значит авторизация прошла.

По поводу второго, пробовал передавать и массив со значениями "[VKORG] => 5000"
И просто строку "API_USER_LOGIN=login&API_USER_PASSSWORD=password&VKORG=5000­&KUNNR_RG=id&PIN=C110&BRAND=&QUERY_TYPE=&PROGRAM=&KUNNR_ZA=&­VBELN=""

Но ничего не проходит, не заполнена сбытовая организация это первый параметр VKORG=5000
Причем строку брал такую как получилась в fiddler при отправке тестового запроса с сайта armtek
21. Isa816 19 11.06.19 14:53 Сейчас в теме
(9) Какие заголовки я дал это пример использовал в другом АПИ, как их передавать надо выяснить, свяжитесь с ТП я думаю они вам помогут.
22. Zixxx 11.06.19 14:56 Сейчас в теме
(21) С Basic авторизацией разобрался, передаю кодированную строку, там все ок, если передаю левую строку то ругается. Т.е. остается проблема именно с передачей параметров
23. Isa816 19 11.06.19 14:58 Сейчас в теме
(22) По поводу второго, пробовал передавать и массив со значениями "[VKORG] => 5000" Это скорее всего не верно, попробуйте так
Массив = Новый массив;

Структура = Новый структура;
Структура.Вставить("VKORG", 5000)
Массив.Добавить(Структура)
26. Zixxx 11.06.19 15:00 Сейчас в теме
(23) Так я тоже передавал, сначала структуру что по примеру выше, потом ее в массив помещал, но ничего

{
"VKORG": "5000",
"KUNNR_RG": "id",
"PIN": "C110"
}
28. Isa816 19 11.06.19 15:02 Сейчас в теме
(26) А если взять просто текст из примера
Array
(
[VKORG] => 5000
[KUNNR_RG] => 000
[PIN] => 000
[BRAND] =>
[QUERY_TYPE] =>
[PROGRAM] =>
[KUNNR_ZA] =>
[VBELN] =>
)
И запихнуть его в файл и отправить, так срабатывает?
29. Zixxx 11.06.19 15:04 Сейчас в теме
31. Isa816 19 11.06.19 15:06 Сейчас в теме
(29) https://www.getpostman.com/downloads/ Вот есть программка, через неё можно отладить запросы. Посмотрите что она будет выдавать.
34. Zixxx 11.06.19 15:11 Сейчас в теме
(31) Я почти точь в точь такой же и пробую, один интерфейс, возвращает тоже самое что и через 1с
35. Isa816 19 11.06.19 15:16 Сейчас в теме
(34) Ну значит проблема на стороне сервиса. Если вы передаете туда правильные данные, а приходит ошибка то значит ошибка где то еще.
36. tvm 11.06.19 15:17 Сейчас в теме
(35) не факт что правильно передается. Автор как раз и не может понять в каком виде нужно отправлять
37. tvm 11.06.19 15:43 Сейчас в теме
38. Zixxx 11.06.19 15:45 Сейчас в теме
(37) Он тоже вернет что не может получить параметры
39. tvm 11.06.19 15:51 Сейчас в теме
(38) кто вернет? я имел ввиду попробовать способами как там написано
25. Isa816 19 11.06.19 15:00 Сейчас в теме
(22) Ну и как говорил попробуйте двумя способами, записывать JSON в файл и отправлять его и отправлять его внутри POST запроса
30. Zixxx 11.06.19 15:04 Сейчас в теме
(25)
вать JSON в файл и отправлять его и отправлять его внутри POST запрос

УстановитьИмяФайлаТела тоже пробовал
33. tvm 11.06.19 15:09 Сейчас в теме
(30) а у них нет какого-нибудь логина/пароля пробного?
27. Zixxx 11.06.19 15:01 Сейчас в теме
(21) Манагер говорит нет у них техподдержки, весь мануал у них на сайте и типо никогда ни у кого вопросов не возникало
3. tvm 11.06.19 11:42 Сейчас в теме
(0) нужно скорее всего передавать с помощью УстановитьТелоИзСтроки
4. Zixxx 11.06.19 11:49 Сейчас в теме
(3) А разве у меня по другому?
7. tvm 11.06.19 12:00 Сейчас в теме
8. tvm 11.06.19 12:39 Сейчас в теме
(0) попробуйте вместо
HTTPЗапрос = Новый HTTPЗапрос();
    
    АдресРесурса    = "/api/ws_search/search?format=json";

сделать
 АдресРесурса    = "/api/ws_search/search?format=json"
HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса)
10. Zixxx 11.06.19 13:39 Сейчас в теме
(8) Тоже самое не видит параметры которые я передаю
11. tvm 11.06.19 14:14 Сейчас в теме
(10) а если отправить через
УстановитьИмяФайлаТела
?
12. Zixxx 11.06.19 14:26 Сейчас в теме
(11)
УстановитьИмяФайлаТела

Так а в файле то что написать? В описании не нашел
13. tvm 11.06.19 14:28 Сейчас в теме
(12) то что в json записываете.
ЗЫ. А чем тестировали сервис? Postman-om?
15. Zixxx 11.06.19 14:29 Сейчас в теме
(13)
Postman-om

Что значить Postman-om?
16. tvm 11.06.19 14:30 Сейчас в теме
(15) это программа такая. Postman
17. Zixxx 11.06.19 14:31 Сейчас в теме
(16) У них на сайте есть веб форма для тестирования

http://ws.armtek.ru/test/test/generate/Ws_search/search_post
14. Zixxx 11.06.19 14:28 Сейчас в теме
(11) Попробовал так
[VKORG] => 5000
[KUNNR_RG] => 123
[PIN] => С110
[BRAND] =>
[QUERY_TYPE] =>
[PROGRAM] =>
[KUNNR_ZA] =>
[VBELN] =>

Тоже самое ругается что не заполнена сбытовая организация, это вот это [VKORG] => 5000
18. tvm 11.06.19 14:39 Сейчас в теме
(17) попробуйте Postman или SoapUI
19. Zixxx 11.06.19 14:50 Сейчас в теме
(18) Я продую через ARC, тоже самое
Не понятно в каком виде в итоге надо передавать параметр
20. tvm 11.06.19 14:52 Сейчас в теме
(19) мож в XML, а в JSON-е только ответ возвращается. В Fiddler в каком виде запрос показывает?
24. Zixxx 11.06.19 14:59 Сейчас в теме
(20) Так в фидлере я вижу только то что мне вернула веб форма а она возвращает html и там типо есть поле в котором так написано

</pre><h2>Ответ:</h2><pre>stdClass Object
(
[STATUS] => 200
[MESSAGES] => Array
(
)

[RESP] => Array
(
[0] => stdClass Object
(
[PIN] => 95635424
[BRAND] => PSA
[NAME] => Сфера
[ARTID] => 549824
[PARNR] => 193895
[KEYZAK] => 0000021167
[RVALUE] => 3
[RDPRF] => 1
[MINBM] => 1.000
[RETDAYS] => 14
[VENSL] => 95.0
[PRICE] => 2599.20
[WAERS] => RUB
[DLVDT] => 20190617163000
[WRNTDT] => 20190619163000
[ANALOG] => X
32. tvm 11.06.19 15:08 Сейчас в теме
(24) так это ответ. На него можно не опираться
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Бобров
зарплата от 100 000 руб. до 150 000 руб.
Временный (на проект)

Студент (стажер) 1С
Нижний Новгород
зарплата от 25 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 120 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата до 100 000 руб.
Полный день

Программист 1С
Новосибирск
зарплата от 80 000 руб.
Полный день