powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / пример на PHP перенести в Delphi
7 сообщений из 7, страница 1 из 1
пример на PHP перенести в Delphi
    #39820466
abwabw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дали пример на PHP. Отправка данных (json) через POST c авторизацией.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
<?php
ini_set('error_reporting', E_ALL);
ini_set('display_errors', true);
$adminJson1 = '{
    "method" : "change_id",
    "data" : {
        "old_id" : "'."0123456789".'",
        "new_id" : "'."9876543210".'"
    }
}';
$postData = $adminJson1;
class PostRequest {
    private $urlApi = "http://abrabr.obr/api.php";
    private $urlAdminApi = "http://abrabr.obr/adminApi.php";
    private $urlLogin = "LoGiN";
    private $urlPassword = "PaSsWoRd";
    function __construct($data){
    $this->sendPostRequest($data);
    }
    function sendPostRequest($data){
        $fields = $data;
        $headers = array(
            'Content-Type: application/json',
            'Authorization: Basic '. base64_encode($this->urlLogin . ":" . $this->urlPassword)
        );
        $fields_string = json_encode($fields);
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL, $this->urlAdminApi);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
        curl_setopt($ch, CURLOPT_USERPWD, $this->urlLogin . ":" . $this->urlPassword);
        curl_setopt($ch,CURLOPT_POST, true);
        curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
        $result = curl_exec($ch);
        if(curl_errno($ch)){
            throw new Exception(curl_error($ch));
        }
        echo $result;
    }
}
$post = new PostRequest(json_decode($postData, true));



В принципе используя idHTTP должно получиться что-то наподобе этого

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
    Json: string;
    sResponse: string;
    JsonToSend: TMemoryStream;
    surlAdminApi, surlLogin, surlPassword: string;
begin
    surlAdminApi:= 'http://abrabr.obr/adminApi.php';
    surlLogin:= 'LoGiN';
    surlPassword:= 'PaSsWoRd';
    Json := '{"method" : "change_id","data" : {"old_id" : "0123456789","new_id" : "9876543210"}}';
    memo1.Text := Json;
    try
      JsonToSend := TStringStream.Create(Json, TEncoding.UTF8);
      JsonToSend.Position := 0;
      HTTP1.Request.ContentType := 'application/json';
      HTTP1.Request.CharSet := 'utf-8';
      try
       sResponse := HTTP1.Post(surlAdminApi, JsonToSend);
      except
       on E: Exception do
       ShowMessage('Error: '#13#10 + e.Message);
      end;
    finally
      JsonToSend.Free;
    end;
    memo1.Text := sResponse;
end;


Но что-то не въеду что, в каком виде и куда вставить вот это
Код: php
1.
'Authorization: Basic '. base64_encode($this->urlLogin . ":" . $this->urlPassword);


вариант username/password не проходит
Код: pascal
1.
2.
      HTTP1.Request.username := surlLogin;
      HTTP1.Request.password := surlPassword;


Ну и не понятны где и как выставлять все параметры, которые выставляются в PHP, типа
Код: php
1.
2.
3.
4.
5.
6.
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
        curl_setopt($ch, CURLOPT_USERPWD, $this->urlLogin . ":" . $this->urlPassword);
        curl_setopt($ch,CURLOPT_POST, true);
        curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER


Вопрос: помогите перевести пример из PHP в Delphi.
...
Рейтинг: 0 / 0
пример на PHP перенести в Delphi
    #39820469
SQL-Talker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала было бы неплохо загуглить типа - "delphi TIdHTTPServer веб-сервер"
...
Рейтинг: 0 / 0
пример на PHP перенести в Delphi
    #39820473
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо древнего, монструозного и глюкавого INDY лучше пользовать TNetHTTPClient.

http://docwiki.embarcadero.com/RADStudio/Rio/en/Using_an_HTTP_Client
...
Рейтинг: 0 / 0
пример на PHP перенести в Delphi
    #39820529
Snickbw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatВместо древнего, монструозного и глюкавого INDY лучше пользовать TNetHTTPClient.
К сожалению лицензия есть только максимум на XE6. А HTTPClient появился в XE8. Так что придётся ворочаться с INDY. Но за предложение СПС. Есть причина покупать версию повыше.
...
Рейтинг: 0 / 0
пример на PHP перенести в Delphi
    #39820578
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
abwabwНо что-то не въеду что, в каком виде и куда вставить вот это
Код: php
1.
'Authorization: Basic '. base64_encode($this->urlLogin . ":" . $this->urlPassword);

это базовая авторизация, она в заголовок запроса должна попасть
вроде в Headers добавляется обычным текстом
...
Рейтинг: 0 / 0
пример на PHP перенести в Delphi
    #39820599
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Snickbw,

Indy, в целом, нормально работает. Лучше только что версию обновить с коробочной на посвежее, удачи.
...
Рейтинг: 0 / 0
пример на PHP перенести в Delphi
    #39820785
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)это базовая авторизация, она в заголовок запроса должна попасть
вроде в Headers добавляется обычным текстом
+1
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / пример на PHP перенести в Delphi
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]