Загрузка данных на сайт методом POST

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
yuriy
Посетитель
Сообщения: 42
Зарегистрирован: 24 Август 2005, 3:54

Загрузка данных на сайт методом POST

Сообщение yuriy »

Добрый день!

Помогите пожалуйста реализовать следующую возможность

Необходимо на определенный IP осуществить загрузку данных

Метод: POST
Формат данных - JSON
Описание: На адрес сервиса методом POST передается json объект с нижеописанной структурой.

Сам объект json я реализовал через текстовый файл
Проверка на валидность файл проходит
Если возможность через Clarion 5.5 или другой реализовать процесс загрузки данных методом POST
Идеальный вариант пользователь запускает программу выбирает файл для загрузки
Происходит процесс загрузки и в ответ получает информацию от сервиса о результате загрузки тоже в формате json
Опыта работы с Php не имею.
С Уважением
Картавцев Юрий
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Загрузка данных на сайт методом POST

Сообщение Admin »

Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Загрузка данных на сайт методом POST

Сообщение 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.

Могу и ещё поискать примеры...
yuriy
Посетитель
Сообщения: 42
Зарегистрирован: 24 Август 2005, 3:54

Загрузка данных на сайт методом POST

Сообщение yuriy »

Спасибо за советы. Буду разбираться дальше. Если не затруднительно, то поищите еще примеры.
С Уважением
Картавцев Юрий
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Загрузка данных на сайт методом POST

Сообщение 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...
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3285
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 48 раз
Контактная информация:

Загрузка данных на сайт методом POST

Сообщение Дед Пахом »

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
С уважением, ДП
yuriy
Посетитель
Сообщения: 42
Зарегистрирован: 24 Август 2005, 3:54

Загрузка данных на сайт методом POST

Сообщение yuriy »

Добрый день!

Спасибо всем ответившим
Что означает этот параметр
Дед Пахом писал(а): argname = 'userfile'
С Уважением
Картавцев Юрий
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3285
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 48 раз
Контактная информация:

Загрузка данных на сайт методом POST

Сообщение Дед Пахом »

yuriy писал(а): Что означает этот параметр
имеется в виду http://myserver/index.php?userfile=blabla
С уважением, ДП
yuriy
Посетитель
Сообщения: 42
Зарегистрирован: 24 Август 2005, 3:54

Загрузка данных на сайт методом POST

Сообщение yuriy »

Добрый день!

Поправьте если я не прав
url = 'http://myserver/index.php' //Адрес сервиса куда загружаем данные
argname = 'userfile' //Строка содержащая адрес сервера и файл с загружаемыми данными
infile = 'test.json' // Файл с загружаемыми данными
respfile = 'post_response.json' //Файл с ответом сервера

С уважением
Юрий
С Уважением
Картавцев Юрий
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3285
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 48 раз
Контактная информация:

Загрузка данных на сайт методом POST

Сообщение Дед Пахом »

yuriy писал(а): argname = 'userfile' //Строка содержащая адрес сервера и файл с загружаемыми данными
argname это имя аргумента в строке url: arg1=val1&arg2=val2...
С уважением, ДП
Ответить