Загрузка данных на сайт методом POST
Модератор: Дед Пахом
					Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
	При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Загрузка данных на сайт методом POST
Добрый день!
Помогите пожалуйста реализовать следующую возможность
Необходимо на определенный IP осуществить загрузку данных
Метод: POST
Формат данных - JSON
Описание: На адрес сервиса методом POST передается json объект с нижеописанной структурой.
Сам объект json я реализовал через текстовый файл
Проверка на валидность файл проходит
Если возможность через Clarion 5.5 или другой реализовать процесс загрузки данных методом POST
Идеальный вариант пользователь запускает программу выбирает файл для загрузки
Происходит процесс загрузки и в ответ получает информацию от сервиса о результате загрузки тоже в формате json
Опыта работы с Php не имею.
			
			
									
						Помогите пожалуйста реализовать следующую возможность
Необходимо на определенный IP осуществить загрузку данных
Метод: POST
Формат данных - JSON
Описание: На адрес сервиса методом POST передается json объект с нижеописанной структурой.
Сам объект json я реализовал через текстовый файл
Проверка на валидность файл проходит
Если возможность через Clarion 5.5 или другой реализовать процесс загрузки данных методом POST
Идеальный вариант пользователь запускает программу выбирает файл для загрузки
Происходит процесс загрузки и в ответ получает информацию от сервиса о результате загрузки тоже в формате json
Опыта работы с Php не имею.
С Уважением
Картавцев Юрий
			
						Картавцев Юрий
- Admin
 - Администратор
 - Сообщения: 4022
 - Зарегистрирован: 05 Июль 2005, 15:59
 - Откуда: Хабаровск
 - Благодарил (а): 59 раз
 - Поблагодарили: 42 раза
 - Контактная информация:
 
Загрузка данных на сайт методом POST
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
			
						Загрузка данных на сайт методом POST
Делал когда-то класс 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.
Могу и ещё поискать примеры...
			
			
									
						Вот здесь https://mega.nz/#!Fl5FEAoT!WU3ntZ1aG8LE ... ONI3QTMcqQ
пример программы, ведущей обмен по ftp/http-get/http-post
А вот здесь https://mega.nz/#!o1xmHCob!fO9dgFjFK535 ... 751kQgGxqM
кусок из реальной программы, обменивающей данные по протоколу SOAP.
Наверное, SOAP вполне можно поправить на JSON.
Могу и ещё поискать примеры...
Загрузка данных на сайт методом POST
Спасибо за советы. Буду разбираться дальше. Если не затруднительно, то поищите еще примеры.
			
			
									
						С Уважением
Картавцев Юрий
			
						Картавцев Юрий
Загрузка данных на сайт методом POST
1. Стандартный протокол POST предусматривает передачу данных в виде 
Переменная = значение & Переменная=значение...., всё это дело укладывается в буфер, снабжается заголовками и передаётся.
Но это если POST...
После чего принимается ответ от сервера (который может быть чем угодно).
Если это Ваш сервер, то просто согласуйте имя переменной и сделайте отправку Вашего текста
Что-типа
             
2. Если это всё же не POST, найдите метод SOAPData и сделайте копию, например, JSONData. Замените заголовки и сделайте версию для JSON...
			
			
									
						Переменная = значение & Переменная=значение...., всё это дело укладывается в буфер, снабжается заголовками и передаётся.
Но это если 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...
- Дед Пахом
 - Старичок
 - Сообщения: 3346
 - Зарегистрирован: 07 Июль 2005, 16:51
 - Откуда: Москва, Россия
 - Благодарил (а): 20 раз
 - Поблагодарили: 56 раз
 - Контактная информация:
 
Загрузка данных на сайт методом POST
Вот так в 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
Добрый день!
Спасибо всем ответившим
Что означает этот параметр
			
			
									
						Спасибо всем ответившим
Что означает этот параметр
С Уважением
Картавцев Юрий
			
						Картавцев Юрий
- Дед Пахом
 - Старичок
 - Сообщения: 3346
 - Зарегистрирован: 07 Июль 2005, 16:51
 - Откуда: Москва, Россия
 - Благодарил (а): 20 раз
 - Поблагодарили: 56 раз
 - Контактная информация:
 
Загрузка данных на сайт методом POST
имеется в виду http://myserver/index.php?userfile=blabla
С уважением, ДП
			
						Загрузка данных на сайт методом POST
Добрый день!
Поправьте если я не прав
url = 'http://myserver/index.php' //Адрес сервиса куда загружаем данные
argname = 'userfile' //Строка содержащая адрес сервера и файл с загружаемыми данными
infile = 'test.json' // Файл с загружаемыми данными
respfile = 'post_response.json' //Файл с ответом сервера
С уважением
Юрий
			
			
									
						Поправьте если я не прав
url = 'http://myserver/index.php' //Адрес сервиса куда загружаем данные
argname = 'userfile' //Строка содержащая адрес сервера и файл с загружаемыми данными
infile = 'test.json' // Файл с загружаемыми данными
respfile = 'post_response.json' //Файл с ответом сервера
С уважением
Юрий
С Уважением
Картавцев Юрий
			
						Картавцев Юрий
- Дед Пахом
 - Старичок
 - Сообщения: 3346
 - Зарегистрирован: 07 Июль 2005, 16:51
 - Откуда: Москва, Россия
 - Благодарил (а): 20 раз
 - Поблагодарили: 56 раз
 - Контактная информация:
 
Загрузка данных на сайт методом POST
argname это имя аргумента в строке url: arg1=val1&arg2=val2...
С уважением, ДП
			
						