Помогите с передачей параметров методом POST в управляемом приложении

1. апостол 32 24.11.17 20:49 Сейчас в теме
Добрый вечер!
Пытаюсь получить данные с интернет страницы https://check1.fsrar.ru/MobileApi/transportwb

Пишу следующий код:


&НаКлиенте
Процедура КапчаПриИзменении(КапчаИД,Request,)

    Request = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
	
	
	Капча1 = НРег(Капча);

	ТекстЗапроса = "";
	ТекстЗапроса = ТекстЗапроса + "id=" + Объект.ИдентификаторТТН + "&";
	ТекстЗапроса = ТекстЗапроса + "owner_id=" + Объект.КлиентИД + "&";
	ТекстЗапроса = ТекстЗапроса + "CaptchaId=" + "SampleCaptcha" + "&";
	ТекстЗапроса = ТекстЗапроса + "InstanceId=" + КапчаИД + "&";
	ТекстЗапроса = ТекстЗапроса + "UserInput=" + Капча1;
	
	Request.Open("POST", "https://check1.fsrar.ru/MobileApi/transportwb", 0);
	Request.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	Request.Send(ТекстЗапроса);
	Request.WaitForResponse();
	
	Ответ = Сред(Request.ResponseText,2, СтрДлина(Request.ResponseText)-2);
	
	Ответ = СтрЗаменить(Ответ, "\u003c", "<");
	Ответ = СтрЗаменить(Ответ, "\u003e", ">");
	Сообщить(ответ);
	
КонецПроцедуры
Показать


Выдает сообщение: ошибка ввода с картинки, хотя в отладчики данные InstanceId и UserInput совпадают
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
7. апостол 32 27.11.17 18:35 Сейчас в теме
Разобрался, все работает. Ошибка была в контексте.
Пример рабочего кода:

&НаКлиенте
Процедура КапчаПриИзменении()

    Если Request = Неопределено Тогда
		Возврат;
	КонецЕсли;

	Капча = НРег(Капча);

	ТекстЗапроса = "";
	ТекстЗапроса = ТекстЗапроса + "id=" + Объект.ИдентификаторТТН + "&";
	ТекстЗапроса = ТекстЗапроса + "owner_id=" + Объект.КлиентИД + "&";
	ТекстЗапроса = ТекстЗапроса + "CaptchaId=" + "SampleCaptcha" + "&";
	ТекстЗапроса = ТекстЗапроса + "InstanceId=" + КапчаИД + "&";   
	ТекстЗапроса = ТекстЗапроса + "UserInput=" + Капча + "&";
	
	
	Request.Open("POST", "https://check1.fsrar.ru/MobileApi/transportwb", 0);

	Request.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	Request.Send(ТекстЗапроса);
	Request.WaitForResponse();
	
	Ответ = Сред(Request.ResponseText,2, СтрДлина(Request.ResponseText)-2);
	
	Ответ = СтрЗаменить(Ответ, "\u003c", "<");
	Ответ = СтрЗаменить(Ответ, "\u003e", ">");
	
	Макет = ПолучитьМакетHTML();
	ПолеHTMLДокумента1 = СтрЗаменить(Макет, "#InsertAnswer#", Ответ);
	ЭтаФорма.ОбновитьОтображениеДанных(Элементы.ПолеHTMLДокумента1);
	
	Если Найти(Ответ, "Ошибка ввода") Тогда
		ПолучитьКартинкуНажатие(Неопределено);
		Капча = "";
		Капча = Капча;
	КонецЕсли;
	
КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 1490 24.11.17 21:20 Сейчас в теме
(1) возможно регистр играет роль
3. апостол 32 24.11.17 21:28 Сейчас в теме
(2) не играет, в отладчике данные идентичные. и когда в браузере водишь код с изображения, регистр не учитывается
4. Xershi 1490 24.11.17 21:51 Сейчас в теме
5. апостол 32 25.11.17 20:15 Сейчас в теме
(4)почитал, но только все равно не могу понять в чем ошибка, в обычном приложении код работает
6. Xershi 1490 26.11.17 01:54 Сейчас в теме
(5) значит ответ в контексте.
7. апостол 32 27.11.17 18:35 Сейчас в теме
Разобрался, все работает. Ошибка была в контексте.
Пример рабочего кода:

&НаКлиенте
Процедура КапчаПриИзменении()

    Если Request = Неопределено Тогда
		Возврат;
	КонецЕсли;

	Капча = НРег(Капча);

	ТекстЗапроса = "";
	ТекстЗапроса = ТекстЗапроса + "id=" + Объект.ИдентификаторТТН + "&";
	ТекстЗапроса = ТекстЗапроса + "owner_id=" + Объект.КлиентИД + "&";
	ТекстЗапроса = ТекстЗапроса + "CaptchaId=" + "SampleCaptcha" + "&";
	ТекстЗапроса = ТекстЗапроса + "InstanceId=" + КапчаИД + "&";   
	ТекстЗапроса = ТекстЗапроса + "UserInput=" + Капча + "&";
	
	
	Request.Open("POST", "https://check1.fsrar.ru/MobileApi/transportwb", 0);

	Request.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	Request.Send(ТекстЗапроса);
	Request.WaitForResponse();
	
	Ответ = Сред(Request.ResponseText,2, СтрДлина(Request.ResponseText)-2);
	
	Ответ = СтрЗаменить(Ответ, "\u003c", "<");
	Ответ = СтрЗаменить(Ответ, "\u003e", ">");
	
	Макет = ПолучитьМакетHTML();
	ПолеHTMLДокумента1 = СтрЗаменить(Макет, "#InsertAnswer#", Ответ);
	ЭтаФорма.ОбновитьОтображениеДанных(Элементы.ПолеHTMLДокумента1);
	
	Если Найти(Ответ, "Ошибка ввода") Тогда
		ПолучитьКартинкуНажатие(Неопределено);
		Капча = "";
		Капча = Капча;
	КонецЕсли;
	
КонецПроцедуры
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот