Envio para API via POST Request no Delphi

API

Delphi

JSON

30/08/2023

Bom dia, meus amigos!
Será que poderiam me ajudar neste impasse, por favor?
Estou testando uma API para cadastro de exames em hambiente de homologação.
Eu tento gerar um json no delphi para o envio deste exame, mas me retorna erro ao consumí-lo, mas me retorna erro.
Estou tentando o envio desta forma:

//POST
Json:= ''[{''+
      ''"TipoExame":"''+vTipo+''","Indicacao":"''+vIndicacao+''","ArquivosExame":"''+pdfLista.Text+''",''+
      ''"DataExame":"''+vDataExame+''","NumeroControle":"''+vNumControle+''",''+
      ''"Medico":{"Nome":"''+vMedico+''","Crm":"''+vCRM+''","Sexo":"''+vSexoMedico+''"},''+
      ''"Paciente":{"Nome":"''+vNome+''","Altura":"''+FloatToStr(vAltura)+''","Peso":"''+FloatToStr(vPeso)+''",''+
      ''"Rg":"''+vRG+''","Cpf":"''+vCPF+''","Sexo":"''+vSexo+''","DataNascimento:"''+vDataNasc+''"},''+
      ''"EmpresaSolicitante":{"Nome":"''+Empresa+''"}''+
      ''}]'';

    RESTRequestCadastro.AddBody(Json, TRESTContentType.ctAPPLICATION_JSON);
    RESTRequestCadastro.Execute;


O exemplo que me deram, foi este:

[
	{
		TipoExame (Obrigatório):	string
		Indicacao (Obrigatório):	string
		ArquivosExame:	
			[
				string [URL]
			]
		DataExame (Obrigatório):	string (date-time (yyyy-mm-dd))
		NumeroControle:				string
		Medico:	
			{
				Nome:				string
				Crm:				string
				Sexo:				string
			}
		Paciente (Obrigatório):	
			{
				Nome:				string
				Altura:				number (double)
				Peso:				number (double)
				Rg:					string
				Cpf:				string
				Sexo (*):			string
				DataNascimento:		string (date-time (yyyy-mm-dd))
			}
		EmpresaSolicitante (Obrigatório):	
			{
				Nome:				string
			}
	}
]


Desde já agradeço a todos que puderem me ajudar e acredito que a ajuda possa vir a ser útil para mais alguém. Forte abraço!
Caio Guimarães

Caio Guimarães

Curtidas 0

Respostas

Alisson

Alisson

30/08/2023

Bom dia, meus amigos!
Será que poderiam me ajudar neste impasse, por favor?
Estou testando uma API para cadastro de exames em hambiente de homologação.
Eu tento gerar um json no delphi para o envio deste exame, mas me retorna erro ao consumí-lo, mas me retorna erro.
Estou tentando o envio desta forma:

//POST
Json:= ''[{''+
      ''"TipoExame":"''+vTipo+''","Indicacao":"''+vIndicacao+''","ArquivosExame":"''+pdfLista.Text+''",''+
      ''"DataExame":"''+vDataExame+''","NumeroControle":"''+vNumControle+''",''+
      ''"Medico":{"Nome":"''+vMedico+''","Crm":"''+vCRM+''","Sexo":"''+vSexoMedico+''"},''+
      ''"Paciente":{"Nome":"''+vNome+''","Altura":"''+FloatToStr(vAltura)+''","Peso":"''+FloatToStr(vPeso)+''",''+
      ''"Rg":"''+vRG+''","Cpf":"''+vCPF+''","Sexo":"''+vSexo+''","DataNascimento:"''+vDataNasc+''"},''+
      ''"EmpresaSolicitante":{"Nome":"''+Empresa+''"}''+
      ''}]'';

    RESTRequestCadastro.AddBody(Json, TRESTContentType.ctAPPLICATION_JSON);
    RESTRequestCadastro.Execute;


O exemplo que me deram, foi este:

[
	{
		TipoExame (Obrigatório):	string
		Indicacao (Obrigatório):	string
		ArquivosExame:	
			[
				string [URL]
			]
		DataExame (Obrigatório):	string (date-time (yyyy-mm-dd))
		NumeroControle:				string
		Medico:	
			{
				Nome:				string
				Crm:				string
				Sexo:				string
			}
		Paciente (Obrigatório):	
			{
				Nome:				string
				Altura:				number (double)
				Peso:				number (double)
				Rg:					string
				Cpf:				string
				Sexo (*):			string
				DataNascimento:		string (date-time (yyyy-mm-dd))
			}
		EmpresaSolicitante (Obrigatório):	
			{
				Nome:				string
			}
	}
]


Desde já agradeço a todos que puderem me ajudar e acredito que a ajuda possa vir a ser útil para mais alguém. Forte abraço!



Para enviar uma solicitação POST para uma API em Delphi, você pode usar a biblioteca Indy (Internet Direct) para realizar a solicitação HTTP. Aqui está um exemplo de como fazer isso:
uses
SysUtils, Classes, IdHTTP;

procedure SendPOSTRequest(const URL: string; const POSTData: string);
var
IdHTTP1: TIdHTTP;
RequestBody: TStringStream;
begin
IdHTTP1 := TIdHTTP.Create(nil);
RequestBody := TStringStream.Create(POSTData);
try
IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
IdHTTP1.Request.CustomHeaders.Add('Authorization: Bearer SeuTokenAqui'); // Se necessário, adicione cabeçalhos de autenticação

// Realize a solicitação POST
IdHTTP1.Post(URL, RequestBody);
finally
IdHTTP1.Free;
RequestBody.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
// Exemplo de dados a serem enviados no corpo da solicitação POST
// Substitua isso com seus próprios dados em formato URL-encoded
SendPOSTRequest('https://api.example.com/endpoint', 'param1=valor1¶m2=valor2');
end;


Fonte: blog.tyttosoft.com.br
GOSTEI 0
POSTAR