Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / RTC: элементарный HTTP клиент / 16 сообщений из 16, страница 1 из 1
16.02.2021, 16:39
    #40045863
SOFT FOR YOU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RTC: элементарный HTTP клиент
Делаю по этому примеру: http://www.realthinclient.com/classroom/

Делаю обычный запрос в браузере
OnCheckRequest приходит
В OnDataReceived Complete возвращает False
Если не анализировать Complete - в любом случае сервак ничего не отвечает

Что нужно поправить?

Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
program RealThinClient;

{$APPTYPE CONSOLE}

uses
  System.SysUtils,
  rtcTypes,
  rtcSystem,
  rtcInfo,
  rtcConn,
  rtcDataSrv,
  rtcHttpSrv;

type
  THttpServer = class(TRtcHttpServer)
  protected
    procedure DoCheckRequest(Sender: TRtcConnection);
    procedure DoReceived(Sender: TRtcConnection);
  end;

procedure THttpServer.DoCheckRequest(Sender: TRtcConnection);
begin
  Sender.Accept;
end;

procedure THttpServer.DoReceived(Sender: TRtcConnection);
begin
  if (Request.Complete) then
  begin
    Response.ContentType := 'text/plain';
    Write('OK');
  end;
end;


var
  HttpServer: THttpServer;
  DataProvider: TRtcDataProvider;

begin
  HttpServer := THttpServer.Create(nil);
  try
    DataProvider := TRtcDataProvider.Create(HttpServer);
    DataProvider.Server := HttpServer;
    DataProvider.OnCheckRequest := HttpServer.DoCheckRequest;
    DataProvider.OnDataReceived := HttpServer.DoReceived;

    HttpServer.ServerAddr := 'localhost';
    HttpServer.ServerPort := '1234';
    HttpServer.ServerIPV := rtc_IPVDefault;
    HttpServer.MultiThreaded := True;

    HttpServer.Listen;

    while (True) do
    begin
      Sleep(1000);
    end;

  finally
    HttpServer.Free;
  end;

end.
...
Рейтинг: 0 / 0
16.02.2021, 17:47
    #40045912
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RTC: элементарный HTTP клиент
SOFT FOR YOU,

давай начнём с азов - что ты хочешь получить в итоге, зачем тебе тут THttpServer

Ты же спрашиваешь про HttpClient, а не HttpServer

И по ссылке у тебя - "RTC HTTP Server in 199 lines of code"
а в заголовке - "элементарный HTTP клиент"
...
Рейтинг: 0 / 0
16.02.2021, 17:50
    #40045916
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RTC: элементарный HTTP клиент
чтобы сделать элементарный Http клиент, достаточно создать инстанс TRtcHttpClient
...
Рейтинг: 0 / 0
16.02.2021, 17:52
    #40045918
Cobalt747
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RTC: элементарный HTTP клиент
SOFT FOR YOU,

попробуй добавить обработчик OnRequestNotAccepted
может там что увидишь
...
Рейтинг: 0 / 0
16.02.2021, 17:52
    #40045920
SOFT FOR YOU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RTC: элементарный HTTP клиент
Опечатался
сорян
сервер
...
Рейтинг: 0 / 0
16.02.2021, 17:54
    #40045922
SOFT FOR YOU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RTC: элементарный HTTP клиент
Cobalt747,

Так я же вручную Accept вызываю
...
Рейтинг: 0 / 0
16.02.2021, 18:13
    #40045934
vkorshun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RTC: элементарный HTTP клиент
А где with TRtcDataServer(Sender) do ?
...
Рейтинг: 0 / 0
16.02.2021, 18:16
    #40045935
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RTC: элементарный HTTP клиент
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
procedure THttpServer.DoReceived(Sender: TRtcConnection);
begin
  if (Request.Complete) then
  begin
    Response.ContentType := 'text/plain';
    Write('OK');
  end;
end;



Request откуда ты взял тут ?
...
Рейтинг: 0 / 0
16.02.2021, 18:16
    #40045936
SOFT FOR YOU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RTC: элементарный HTTP клиент
vkorshun,

Код: pascal
1.
2.
TRtcHttpServer = class(TRtcDataServer)
THttpServer = class(TRtcHttpServer)
...
Рейтинг: 0 / 0
16.02.2021, 18:21
    #40045937
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RTC: элементарный HTTP клиент
SOFT FOR YOU,

сделай для начала по примеру
SOFT FOR YOU
Делаю по этому примеру: http://www.realthinclient.com/classroom/
...
Рейтинг: 0 / 0
16.02.2021, 18:33
    #40045945
SOFT FOR YOU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RTC: элементарный HTTP клиент
defecator,

Реквест это свойство сервера
Ты точно на RTC программируешь?
...
Рейтинг: 0 / 0
16.02.2021, 18:36
    #40045948
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RTC: элементарный HTTP клиент
SOFT FOR YOU
Реквест это свойство сервера
Внезапно: слушающий сокет и клиентский сокет - это два разных сокета
SOFT FOR YOU
Ты точно на RTC программируешь?
Ты точно понимаешь, что ты пишешь? Или программирование методом научного тыка?
...
Рейтинг: 0 / 0
16.02.2021, 19:00
    #40045965
SOFT FOR YOU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RTC: элементарный HTTP клиент
vkorshun,

Жесть
Большое спасибо :)
...
Рейтинг: 0 / 0
17.02.2021, 10:38
    #40046100
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RTC: элементарный HTTP клиент
vkorshun
Не поняли Вы меня.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
procedure THttpServer.DoCheckRequest(Sender: TRtcConnection);
begin
  Sender.Accept;
end;

procedure THttpServer.DoReceived(Sender: TRtcConnection);
begin
  if (Sender.Request.Complete) then
  begin
    Sender.Response.ContentType := 'text/plain';
    Sender.Write('OK');
  end;
end;

Так работает
...
Рейтинг: 0 / 0
23.02.2021, 18:23
    #40048214
SOFT FOR YOU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RTC: элементарный HTTP клиент
И снова здравствуйте

При запросе на сервер передаётся application/json
Вопрос, как из TRtcRequest получить передаваемый JSON?
Свойство DataSize возвращает правильное значение. Как получить сами данные - пока не ясно
...
Рейтинг: 0 / 0
24.02.2021, 00:03
    #40048265
SOFT FOR YOU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RTC: элементарный HTTP клиент
Нашёл
Sender.Read
:)
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / RTC: элементарный HTTP клиент / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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