Я работаю с клиентским приложением Delphi (10.2.2), которое вызывает функции API на сервере REST Delphi (WebModule). На данный момент у меня есть 10 из этих типов вызовов API, которые выполняют все соответствующие HTTP-глаголы (POST, GET, PUT, DELETE), и все они работают нормально, за исключением вызовов, где мне нужно загрузить объект JSON для INSERT / EDIT. на сервере. Я не уверен, что я делаю неправильно, поэтому, если кто-нибудь сможет посмотреть на мою попытку и сообщить мне, что мне не хватает?
var
REQ : TRESTRequest;
RESP : TRESTResponse;
NewPL : TJSONObject;
strOut : String;
begin
try
REQ := TRESTRequest.Create(Application);
RESP := TRESTResponse.Create(Application);
REQ.Response := RESP;
REQ.Resource := 'packlist';
REQ.Client := DM1.RESTClient;
REQ.Method := TRESTRequestMethod.rmPOST;
//Create JSON from UI
NewPL := TJSONObject.Create;
NewPL.AddPair('PL_NO', edtPLNo.Text);
NewPL.AddPair('PL_DATE', edtPLDate.Text);
NewPL.AddPair('SHIP_NO', edtShipmentNo.Text);
NewPL.AddPair('SHIPPER', memShipper.Text);
NewPL.AddPair('CONSIGNEE', memConsignee.Text);
NewPL.AddPair('VEHICLE_REG_NO', edtVehicleRegNo.Text);
NewPL.AddPair('ETD', DateTimeToStr(dateETD.Date));
NewPL.AddPair('ETA', DateTimeToStr(dateETA.Date));
NewPL.AddPair('TOTAL_QTY', edtTotalQty.Text);
NewPL.AddPair('TOTAL_WEIGHT', edtTotalWeight.Text);
NewPL.AddPair('TOTAL_VOLUME', edtTotalVol.Text);
if chkPLComplete.Checked then
NewPL.AddPair('COMPLETE', '1')
else
NewPL.AddPair('COMPLETE', '0');
NewPL.AddPair('SUPPLIER_NO', edtSuppNo5.Text);
NewPL.AddPair('DEBTOR_ACC_NO', '');
NewPL.AddPair('WAYBILL_NO', edtWaybillNo.Text);
strOut := NewPL.ToString;
REQ.AddBody(NewPL); //AV occurs here
REQ.Execute;
DisplayPL(NewPL);
finally
REQ.DisposeOf;
RESP.DisposeOf;
end;
end;
Я уверен, что где-то допустил ошибку, которую я продолжаю с видом ...