Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.08.2021, 22:36
papaper papaper вне форума
Прохожий
 
Регистрация: 02.08.2021
Сообщения: 1
Версия Delphi: 10.4
Репутация: 10
По умолчанию TNetHTTPClient. Отправка Delphi POST на PHP скрипт JSON

Версия: Delphi 10.4
Доброго, давно не работал с Delphi, да и раньше ни разу не пытался даже работать с внешними PHP запросами и тем более JSON.
не работает отправка, через NetHTTPClient компонент. Точнее странно, смотрел возвращаемую строку , говорит "ОК", полагаю, что проблем на стороне Delphi не возникло, тогда что-то неправильно на стороне PHP получается? Не могу понять, не получается разобраться. В PHP всегда массив $_POST пустой, на проверке "$_POST[json]" не установлен даже.


Delphi -код, отправка через POST тестово выглядит так (статус текст "ОК"). Это текущий код, я уже перепробовал разные способы и без Params (а значение переменной заносил напрямую в POST, только Source задействовал. В общем, в любом случае результат один и тот же.
Код:
var
  NetHTTPClient : TNetHTTPClient;
  params,jsonbuf : TStringStream;
  json: TJSONObject;
  jsonstr: string;
  r : IHTTPResponse;
begin
  NetHTTPClient := TNetHTTPClient.Create(nil);
  try
    NetHTTPClient.ContentType := 'application/json; charset=utf-8';
    //NetHTTPClient.AcceptEncoding := ;   
    NetHTTPClient.AcceptCharSet := 'UTF-8';
    NetHTTPClient.OnValidateServerCertificate := OnNetHTTPClientValidateServerCertificate;

    json := TJSONObject.Create;
    json.AddPair('Name1','Value1');
    json.AddPair('Name2','Value2');
    json.AddPair('Name3','Value3');
    jsonstr := json.ToJSON;

    jsonbuf := TStringStream.Create(jsonstr, TEncoding.UTF8);
    params := TStringStream.Create('json=true&s=test');
    try
      //r :=  NetHTTPClient.Post('https://'+WWW_HOST, jsonbuf,params);
      Result := NetHTTPClient.Post('https://'+WWW_HOST+'/?json=true&s=test', jsonbuf).ContentAsString(TEncoding.UTF8);
      //Result := r.StatusText;    - возвращает "OK"
      //memo1.Lines.Clear;
      //memo1.Lines.Add('Response: '+Result);
      //memo1.lines.Add('JSON-String:'+jsonstr);

    finally
      params.Free;
      jsonbuf.Free;
      FreeAndNil(json);
    end;
  finally

    NetHTTPClient.Free;
  end;
end;

PHP - обработчик выглядит так:
PHP код:
// print_r($_POST);   - проверял, пустой от приложения приходит.
         
      
if isset($_POST['json']) {    //&& $_POST['json'] = true      -  при любой 
            
header('Content-type: application/json');
        
            
$gc file_get_contents('php://input',true);
            
$data json_decode($gc);

            
$filename _BASEDIR_'/json.txt';
            
file_put_contents($filename$data);    // сохраняем в файл для проверки
        



Смотрел примеры и видел схожие проблемы , чаще с упоминанием idHTTP, что-то там рекомендации не помогли.

Последний раз редактировалось papaper, 02.08.2021 в 22:39.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:48.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter