Страница 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...