Цитата:
Сообщение от
Lucky13
Если файл текстовый, то, на мой взгляд, лучше использовать http post как говорит Aleksey_M. Проблем особых нет - в аксапте используется тот же WinInet, а на PHP пишется скрипт из нескольких строк. FTP в данном случае создаст дополнительные трудности при администрировании - придется права настраивать, порты открывать и т.п.
А вот если файл бинарный, то только FTP, http post в принципе все равно какие данные передавать, а вот в Аксапте будут проблемы, так как не получается получить указатель на бинарные данные чтобы передать его в фукнцию. Тип str для этого не подойдет, так как обрежет данные по первому нулевому символу.
Пытаюсь передать файл по http, к сожалению не выходит.
Добавил в WinInet new()
X++:
_httpOpenRequest = new DLLFunction(_winInet, 'HttpOpenRequestA');
_httpOpenRequest.returns(ExtTypes::DWORD);
_httpOpenRequest.arg(ExtTypes::DWORD);
_httpOpenRequest.arg(ExtTypes::STRING);
_httpOpenRequest.arg(ExtTypes::STRING);
_httpOpenRequest.arg(ExtTypes::STRING);
_httpOpenRequest.arg(ExtTypes::STRING);
_httpOpenRequest.arg(ExtTypes::STRING);
_httpOpenRequest.arg(ExtTypes::DWORD);
_httpOpenRequest.arg(ExtTypes::DWORD);
_httpSendRequest = new DLLFunction(_winInet, 'HttpSendRequestA');
_httpSendRequest.returns(ExtTypes::DWORD);
_httpSendRequest.arg(ExtTypes::DWORD);
_httpSendRequest.arg(ExtTypes::STRING);
_httpSendRequest.arg(ExtTypes::DWORD);
_httpSendRequest.arg(ExtTypes::POINTER);
_httpSendRequest.arg(ExtTypes::DWORD);
Создал два метода
X++:
int httpOpenRequest(int _handler, str _request, str _targetObjectName)
{
return _httpOpenRequest.call(_handler, _request, _targetObjectName, 0, 0, 0, 1,0);
}
boolean httpSendRequest(int _handler, BinData _file, int _size)
{
return _httpSendRequest.call(_handler, "Content-Type: application/x-www-form-urlencoded", 47, _file, _size);
}
И вызываю так
X++:
BinData binData = new BinData();
binData.loadFile("c:\\test5.txt");
code1 = winInet.internetConnect("192.168.0.10", "", "", 3);
code2 = winInet.httpOpenRequest(code1, "POST", "receive.php");
iwinInet.httpSendRequest(code2, binData, binData.getVariant().safeArray().lastIndex()))
Возможно задаю неправильные параметры для функций,или неправильно указал константы. К сожалению не нашел реализацию этих функций для аксапты.