AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.04.2014, 23:47   #1  
Lekray is offline
Lekray
Участник
 
7 / 10 (1) +
Регистрация: 27.09.2007
Добрый день

Кто-нибудь сабж реализовывал?
Или может знает какую-нибудь утилиту, для этого.
Пробовал модифицировать разными способами всем известный функционал, но ничего не получается. В ответ одна и таже ошибка: $_POST['xml_request'] не заполнено

=============================================
XMLDoc Automation 'Microsoft XML, v6.0'.DOMDocument
locautXmlHttp Automation 'Microsoft XML, v6.0'.ServerXMLHTTP60
=============================================
IF ISCLEAR(XMLDoc) THEN
CREATE(XMLDoc);
XMLDoc.async := FALSE;
XMLDoc.load('C:\TEMP\1.xml');
locautXmlHttp.setTimeouts(5000,160*0,160*1000,600*1000);
locautXmlHttp.open('POST',req_link,FALSE);
locautXmlHttp.setRequestHeader('Content-type','application/xml; charset="utf-8"');
locautXmlHttp.send(XMLDoc);
XMLDoc.load(locautXmlHttp.responseBody);
XMLDoc.save('C:\TEMP\2.xml');
===========================================

Пробовал менять:
1. locautXmlHttp.send('xml_request='+URLencode(XMLDoc.text));
2. req_link := req_link+'?xml_request='+URLencode(XMLDoc.text);
3. заменял везде URLencode(XMLDoc.text) на '<?xml?><DeliveryRequest/>'

Ничего не помогает, других способов найти не могу.
Старый 08.04.2014, 11:33   #2  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Отсутствует создание переменной locautXmlHttp.
Я думаю ServerXMLHTTP60 излишен достаточно обычного xmlhttp


Код:
Name	DataType	Subtype	Length
XMLHTTP	Automation	'Microsoft XML, v6.0'.XMLHTTP60	

// отправка файла
IF ISCLEAR(XMLDoc) THEN
CREATE(XMLDoc);
XMLDoc.async := FALSE;
XMLDoc.load('C:\TEMP\1.xml');

IF NOT ISCLEAR(XMLHTTP) THEN
  CLEAR(XMLHTTP);
CREATE(XMLHTTP);

XMLHTTP.open('POST', "полный путь до файла на сервере", FALSE, Login,Pass);
XMLHTTP.send(XMLDoc);

IF XMLHTTP.status<>200 THEN
  BEGIN
    error(XMLHTTP.statusText)
  END;
Вы уверены, что в ответном сообщении в теле что-то будет?
Старый 08.04.2014, 16:39   #3  
Lekray is offline
Lekray
Участник
 
7 / 10 (1) +
Регистрация: 27.09.2007
Спасибо за ответ, нашел решение.
Аутомейшены разные перепробывал, всё одинаково, работает так же с WinHTTP
Оказывается всё дело в заголовке: 'Content-type','application/x-www-form-urlencoded'

=============================================
XMLDoc Automation 'Microsoft XML, v6.0'.DOMDocument
locautXmlHttp Automation 'Microsoft WinHTTP Services, version 5.1'.WinHttpRequest
=============================================
IF ISCLEAR(XMLDoc) THEN
CREATE(XMLDoc);
XMLDoc.async := FALSE;
XMLDoc.load('C:\TEMP\1.xml');
locautXmlHttp.setTimeouts(5000,160*0,160*1000,600*1000);
locautXmlHttp.open('POST',req_link,FALSE);
locautXmlHttp.SetRequestHeader('Content-type','application/x-www-form-urlencoded');
locautXmlHttp.send('xml_request='+XMLDoc.url);
XMLDoc.load(locautXmlHttp.responseBody);
XMLDoc.save('C:\TEMP\2.xml');
=============================================

Теперь пишу UrlEncode для XML, потому как XMLDoc.url > 4кб
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:56.