Страница 1 из 1
Загрузка данных на сайт методом POST
Добавлено: 13 Май 2016, 11:41
yuriy
Добрый день!
Помогите пожалуйста реализовать следующую возможность
Необходимо на определенный IP осуществить загрузку данных
Метод: POST
Формат данных - JSON
Описание: На адрес сервиса методом POST передается json объект с нижеописанной структурой.
Сам объект json я реализовал через текстовый файл
Проверка на валидность файл проходит
Если возможность через Clarion 5.5 или другой реализовать процесс загрузки данных методом POST
Идеальный вариант пользователь запускает программу выбирает файл для загрузки
Происходит процесс загрузки и в ответ получает информацию от сервиса о результате загрузки тоже в формате json
Опыта работы с Php не имею.
Загрузка данных на сайт методом POST
Добавлено: 13 Май 2016, 15:13
Admin
Загрузка данных на сайт методом POST
Добавлено: 13 Май 2016, 22:39
Yufil
Делал когда-то класс CHTTP, там предусмотрен обмен через ftp/http-get/http-post
Вот здесь
https://mega.nz/#!Fl5FEAoT!WU3ntZ1aG8LE ... ONI3QTMcqQ
пример программы, ведущей обмен по ftp/http-get/http-post
А вот здесь
https://mega.nz/#!o1xmHCob!fO9dgFjFK535 ... 751kQgGxqM
кусок из реальной программы, обменивающей данные по протоколу SOAP.
Наверное, SOAP вполне можно поправить на JSON.
Могу и ещё поискать примеры...
Загрузка данных на сайт методом POST
Добавлено: 14 Май 2016, 18:07
yuriy
Спасибо за советы. Буду разбираться дальше. Если не затруднительно, то поищите еще примеры.
Загрузка данных на сайт методом POST
Добавлено: 14 Май 2016, 18:47
Yufil
1. Стандартный протокол POST предусматривает передачу данных в виде
Переменная = значение & Переменная=значение...., всё это дело укладывается в буфер, снабжается заголовками и передаётся.
Но это если POST...
После чего принимается ответ от сервера (который может быть чем угодно).
Если это Ваш сервер, то просто согласуйте имя переменной и сделайте отправку Вашего текста
Что-типа
Код: Выделить всё
H Class(Chttp)
Loc:Server CString(260)
Loc:Port Long
Loc:Page CString(260)
! Это просто примеры параметров, никакого смысла сюда не заложено
Loc:Server = 'yandex.ru'
Loc:Port = 80
Loc:Page = 'test/index.php'
! Заказываем соединение
H.Connect(Loc:SERVER,Loc:Port)
If H.Error
Message('Ошибка соединения с ' & Loc:SERVER & ':' & Loc:PORT & '|' & H.Error,'Внимание!')
return
End
! Добавляем переменную JSON
H.AddData('JSON',Loc:JSONText)
! И отправляем
H.PostData(Loc:Page)
If H.Error
Message('Ошибка передачи данных:' & H.Error,'Внимание!')
H.Disconnect()
Return
Else
! Сейчас в поле H.Response лежит ответ сервера, он не стандартизирован...
END
2. Если это всё же не POST, найдите метод SOAPData и сделайте копию, например, JSONData. Замените заголовки и сделайте версию для JSON...
Загрузка данных на сайт методом POST
Добавлено: 14 Май 2016, 19:19
Дед Пахом
Admin писал(а): Читаем: viewtopic.php?f=8&t=3527
Вот так в libcurl:
Код: Выделить всё
PROGRAM
PRAGMA('project(#compile libcurl.clw)')
PRAGMA('project(#pragma link(libcurl.lib))')
INCLUDE('libcurl.inc')
MAP
END
curl TCurlClass
res CURLcode
url STRING(256)
argname STRING(32)
infile STRING(256)
respfile STRING(256)
CODE
curl.Init()
url = 'http://myserver/index.php'
argname = 'userfile'
infile = 'test.json'
respfile = 'post_response.json'
res = curl.PostFile(url, argname, infile, respfile)
IF res = CURLE_OK
MESSAGE('Success, see file '& CLIP(respfile) &' for details', 'Post test', ICON:Asterisk)
ELSIF res = -1
MESSAGE('curl_formadd failed: errcode '& res, 'Post test', ICON:Asterisk)
ELSE
MESSAGE('PostFile failed: '& curl.StrError(res), 'libcurl', ICON:Exclamation)
END
Загрузка данных на сайт методом POST
Добавлено: 15 Май 2016, 18:13
yuriy
Добрый день!
Спасибо всем ответившим
Что означает этот параметр
Дед Пахом писал(а): argname = 'userfile'
Загрузка данных на сайт методом POST
Добавлено: 15 Май 2016, 18:18
Дед Пахом
yuriy писал(а): Что означает этот параметр
имеется в виду
http://myserver/index.php?userfile=blabla
Загрузка данных на сайт методом POST
Добавлено: 16 Май 2016, 7:20
yuriy
Добрый день!
Поправьте если я не прав
url = '
http://myserver/index.php' //Адрес сервиса куда загружаем данные
argname = 'userfile' //Строка содержащая адрес сервера и файл с загружаемыми данными
infile = 'test.json' // Файл с загружаемыми данными
respfile = 'post_response.json' //Файл с ответом сервера
С уважением
Юрий
Загрузка данных на сайт методом POST
Добавлено: 16 Май 2016, 14:50
Дед Пахом
yuriy писал(а): argname = 'userfile' //Строка содержащая адрес сервера и файл с загружаемыми данными
argname это имя аргумента в строке url: arg1=val1&arg2=val2...