Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Отладка REST-клиента в Delphi 12.2 для работы с методом updateInsertFirma14

Delphi , Синтаксис , Ошибки и Исключения

 

В данной статье мы рассмотрим, как устранить проблемы, возникающие при работе с REST-клиентом в Delphi 12.2, используя метод updateInsertFirma14. Мы также рассмотрим возможные причины ошибок и предложим решения, чтобы успешно выполнять POST-запросы к серверу.

Введение

Ваша задача заключается в создании REST-клиента для работы с методом updateInsertFirma14 на сервере, который использует Unidac и PostgreSQL. В процессе работы вы столкнулись с ошибкой:

["error": "TServerMethods1.updateInsertFirma14 method not found in the server method list"]

Эта ошибка указывает на то, что метод updateInsertFirma14 не был найден на сервере. Давайте разберем возможные причины и способы их устранения.

Проверка серверной стороны

Сначала проверим, правильно ли определен метод updateInsertFirma14 на сервере. Вот пример кода серверной стороны:

function TServerMethods1.updateInsertFirma14(const AJSON: string): String;
var
  LJSON: TJSONObject;
  JSONValue: TJSONValue;
  UniQuery1: TUniQuery;
  ResultJSON: TJSONObject;
  Firstname, Lastname: string;
begin
  ResultJSON := TJSONObject.Create;
  LJSON := nil;
  UniQuery1 := nil;

  try
    // JSON string'ini parse et
    JSONValue := TJSONObject.ParseJSONValue(AJSON);
    if JSONValue is TJSONObject then
      LJSON := JSONValue as TJSONObject
    else
      raise Exception.Create('Geçerli bir JSON nesnesi bulunamadı.');

    // JSON verisi boş değilse işleme devam et
    if not Assigned(LJSON) then
      raise Exception.Create('Invalid JSON format.');

    // Veritabanı Bağlantısını Kontrol Et
    if not UniConnection1.Connected then
      raise Exception.Create('Database connection is not open.');

    // JSON'dan firstname ve lastname değerlerini al
    Firstname := LJSON.GetValue('firstname', '');
    Lastname := LJSON.GetValue('lastname', '');

    // Eğer firstname veya lastname boşsa hata oluştur
    if (Firstname = '') or (Lastname = '') then
      raise Exception.Create('Firstname or Lastname is missing in the JSON data.');

    // Query Oluşturma
    UniQuery1 := TUniQuery.Create(nil);
    try
      UniQuery1.Connection := UniConnection1;
      UniQuery1.SQL.Text := 'INSERT INTO Firma (firstname, lastname) VALUES (:firstname, :lastname)';
      UniQuery1.Params.ParamByName('firstname').AsString := Firstname;
      UniQuery1.Params.ParamByName('lastname').AsString := Lastname;
      UniQuery1.ExecSQL;

      // Başarılı işlem sonucu
      ResultJSON.AddPair('status', 'success');
      ResultJSON.AddPair('message', 'Firma kaydedildi.');
      ResultJSON.AddPair('result', TJSONNumber.Create(1));
      Result := ResultJSON.ToString;
    finally
      FreeAndNil(UniQuery1);
    end;

  except
    on E: Exception do
    begin
      ResultJSON.AddPair('status', 'error');
      ResultJSON.AddPair('message', E.Message);
      ResultJSON.AddPair('result', TJSONNumber.Create(0));
      Result := ResultJSON.ToString;
    end;
  end;

  FreeAndNil(LJSON);
  FreeAndNil(ResultJSON);
end;

Проверка настройки REST-сервера

Убедитесь, что метод updateInsertFirma14 действительно определен на сервере. В Delphi 12.2 для настройки REST-сервера используется компонент TDSServerClass. Убедитесь, что метод updateInsertFirma14 добавлен в этот компонент.

TDSServerClass1.Methods.Add('updateInsertFirma14', TServerMethods1.updateInsertFirma14);

Проверка клиента

Теперь проверим настройки клиента. Убедитесь, что вы правильно указали URL и ресурс для запроса. Вот пример кода клиента:

procedure TForm1.Button8Click(Sender: TObject);
var
  LJSON: TJSONObject;
  RESTClient: TRESTClient;
  RESTRequest: TRESTRequest;
  RESTResponse: TRESTResponse;
begin
  if Edit1.Text.Trim = '' then
  begin
    ShowMessage('Lütfen bir isim girin.');
    Exit;
  end;

  if Edit2.Text.Trim = '' then
  begin
    ShowMessage('Lütfen bir soyisim girin.');
    Exit;
  end;

  LJSON := TJSONObject.Create;
  try
    LJSON.AddPair('firstname', Edit1.Text.Trim);
    LJSON.AddPair('lastname', Edit2.Text.Trim);

    RESTClient := TRESTClient.Create('http://192.168.1.35:8080/datasnap/rest');
    RESTRequest := TRESTRequest.Create(nil);
    RESTResponse := TRESTResponse.Create(nil);

    try
      RESTRequest.Client := RESTClient;
      RESTRequest.Response := RESTResponse;
      RESTRequest.Resource := 'TServerMethods1/updateInsertFirma14';
      RESTRequest.Method := TRESTRequestMethod.rmPOST;

      RESTRequest.AddBody(LJSON.ToString, ContentTypeFromString('application/json'));

      RESTRequest.Execute;

      if RESTResponse.StatusCode = 200 then
      begin
        ShowMessage('Kayıt başarıyla eklendi.');
        Memo2.Lines.Add('Yanıt: ' + RESTResponse.Content);
      end
      else
      begin
        ShowMessage('Hata: ' + RESTResponse.StatusText);
      end;
    except
      on E: Exception do
        ShowMessage('Hata oluştu: ' + E.Message);
    end;
  finally
    LJSON.Free;
    RESTClient.Free;
    RESTRequest.Free;
    RESTResponse.Free;
  end;
end;

Возможные причины ошибки

  1. Неправильное имя метода: Убедитесь, что имя метода в клиенте совпадает с именем метода на сервере. В вашем случае метод называется updateInsertFirma14, а не InsertFirma14.

  2. Отсутствие метода в списке методов сервера: Убедитесь, что метод updateInsertFirma14 действительно определен и добавлен в список методов сервера.

  3. Неправильный URL: Убедитесь, что вы правильно указали URL и порт сервера. В вашем случае URL выглядит так: http://192.168.1.35:8080/datasnap/rest.

  4. Неправильный тип запроса: Убедитесь, что вы используете метод rmPOST, а не rmGET.

  5. Неправильный формат JSON: Убедитесь, что вы правильно формируете JSON-объект и что он корректен.

Альтернативное решение

Если проблема не решена, можно попробовать использовать библиотеку MARS-Curiosity для работы с REST-сервером. Библиотека MARS-Curiosity предоставляет более удобный и гибкий интерфейс для работы с REST-серверами.

Заключение

В данной статье мы рассмотрели возможные причины ошибки при работе с REST-клиентом в Delphi 12.2 и предложили решения для их устранения. Убедитесь, что вы правильно настроили как серверную, так и клиентскую части вашего приложения. Если проблема не решена, можно попробовать использовать библиотеку MARS-Curiosity для более удобной работы с REST-серверами.

Надеюсь, эта статья поможет вам успешно наладить работу с методом updateInsertFirma14 в вашем приложении на Delphi 12.2.

Создано по материалам из источника по ссылке.

Контекст статьи — решение ошибок при работе с методом updateInsertFirma14 в REST-клиенте Delphi 12.2, включающее проверку настроек сервера и клиента, правильность метода, URL и JSON-формата.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Ошибки и Исключения ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-03-22 19:20:49/0.0035810470581055/0