API 1с7.7 V7HttpReader
Показывать по
сообщений
- 1
- 2
24.09.2016
20:09
#1
Здравствуйте, помогите разобраться с V7HttpReader
Процедура НП()
Соединение = СоздатьОбъект("AddIn.V7HttpReader");
СтрокаПолучения="api.novaposhta.ua/v2.0/xml/";
ФайлЗапроса=КаталогИБ()+"np.xml";
ФайлОтвета=КаталогИБ()+"np1.xml";
Соединение.ОтправитьДляОбработки(СтрокаПолучения,ФайлЗапроса, 1,ФайлОтвета, 1);
КонецПроцедуры
после выполнения этой процедуры получаю обрезанный файл "ФайлОтвета";
в чем может быть косяк?
Процедура НП()
Соединение = СоздатьОбъект("AddIn.V7HttpReader");
СтрокаПолучения="api.novaposhta.ua/v2.0/xml/";
ФайлЗапроса=КаталогИБ()+"np.xml";
ФайлОтвета=КаталогИБ()+"np1.xml";
Соединение.ОтправитьДляОбработки(СтрокаПолучения,ФайлЗапроса, 1,ФайлОтвета, 1);
КонецПроцедуры
после выполнения этой процедуры получаю обрезанный файл "ФайлОтвета";
в чем может быть косяк?
Ответили:
пост #2
24.09.2016
21:33
#2
Ответ на
пост №1
maestro_voln,надо быть отличным экстрасенсом, чтобы по этим данным определить причину. Ответили:
пост #3
30.09.2016
12:48
#4
На стороне web сервера надо явно длину контента указать. Примерно так:
# в $xml записан XML документ
my $write_bytes = length $xml;
print "Accept-Ranges: bytes\n";
print "Content-Length: $write_bytes\n";
print "Content-type: text/xml\n\n";
print $xml;
или так
Header('Accept-Ranges: bytes');
Header('Content-Length: '.$write_bytes);
Header('Content-Type: text/xml');
# в $xml записан XML документ
my $write_bytes = length $xml;
print "Accept-Ranges: bytes\n";
print "Content-Length: $write_bytes\n";
print "Content-type: text/xml\n\n";
print $xml;
или так
Header('Accept-Ranges: bytes');
Header('Content-Length: '.$write_bytes);
Header('Content-Type: text/xml');
30.09.2016
13:30
#5
вэб сервер не мой, компании ""Новая почта". Может есть другие методы кроме V7HttpReader?
30.09.2016
14:04
#6
v7plus хочет "правильный" заголовок контента.
Если нет возможности подкрутить алгоритм на стороне "новой почты", я бы попробовал так:
(алгоритм "навскид", без тестирования, но смысл, думаю, должен быть понятен)
HTTPRequest = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
...
HTTPRequest.Open("GET", СтрокаПолучения+ФайлОтвета);
HTTPRequest.Send();
Если HTTPRequest.Status<>200 Тогда
тмп=СоздатьОбъект("Текст");
тмп.ДобавитьСтроку(HTTPRequest.ResponseText);
тмп.Записать(...);
КонецЕсли;
HTTPRequest=0;
Если нет возможности подкрутить алгоритм на стороне "новой почты", я бы попробовал так:
(алгоритм "навскид", без тестирования, но смысл, думаю, должен быть понятен)
HTTPRequest = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
...
HTTPRequest.Open("GET", СтрокаПолучения+ФайлОтвета);
HTTPRequest.Send();
Если HTTPRequest.Status<>200 Тогда
тмп=СоздатьОбъект("Текст");
тмп.ДобавитьСтроку(HTTPRequest.ResponseText);
тмп.Записать(...);
КонецЕсли;
HTTPRequest=0;
Ответили:
пост #7
30.09.2016
14:21
#7
Ответ на
пост №6
Thorvardr,я ранее рассматривал этот способ,а как им отправить файл на сервер?нужно обязательно отправить файл хмл, в нем содержится запрос, и получить хмл файл с ответом сервера
30.09.2016
15:10
#10
Ответ на
пост №8
Thorvardr,ФайлЗапроса=КаталогИБ()+"np.xml";
Соединение = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
Соединение.Open("POST","http://api.novaposhta.ua/v2.0/xml/");
Соединение.Send(ФайлЗапроса);
Ответ = Соединение.ResponseText();
Сообщить(Ответ);
получаю ответ
<?xml version="1.0" encoding="UTF-8"?>
<root><success>false</success><data/><errors><item>Data is invalid</item></errors><warnings/><info/><messageCodes/><err
- 1
- 2
Запретить ввод на основанииПроблемы при синхронизации баз: куда лучше писать для максимально быстрого получения рекомендации
Читают тему
(гостей: 1)