es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Param null cuando se realiza una llamada HTTP PUT.

Realizo algunas pruebas con una API REST.

Cuando hago una llamada POST:

Param := TMultipartFormData.Create;

Param.AddField('param1', 'value1');
Param.AddField('param2', 'value2');

Response := Client.Post('http://localhost/project/public/login', Param);

Puedo usar param1 y param2 en mi backend.

Cuando hago lo mismo con el método PUT, no puedo usar mis parámetros. param1 y param2 son nulos.

Param := TMultipartFormData.Create;

Param.AddField('param1', 'value1');
Param.AddField('param2', 'value2');

// Los encabezados contienen mi JWT

Response := Client.Put('http://localhost/project/public/api/profile', Param, nil, Headers); 

Para usar mis parámetros en la llamada PUT, necesito agregarlos a mi URL, pero no quiero usarlo de esa manera.

Client.Put(
   'http://localhost/project/public/api/profile?param1=value1', 
   nil, nil, Headers); // Funciona pero no es una solución correcta

Utilizo Firemonkey 10.4.2.

EDIT: Mi llamada PUT funciona en Postman cuando uso el cuerpo x-www-form-urlencoded. Cuando uso form-data, obtengo el parámetro nulo.

¿Cómo puedo proporcionar el parámetro en x-www-form-urlencoded?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para proporcionar parámetros en formato x-www-form-urlencoded, puedes utilizar la propiedad TIdHTTP.Params. Aquí tienes un ejemplo de código:

    Params := TStringList.Create;
    try
      Params.Add('param1=value1');
      Params.Add('param2=value2');
      Client.Request.ContentType := 'application/x-www-form-urlencoded';
      Response := Client.Put('http://localhost/project/public/api/profile', Params);
    finally
      Params.Free;
    end;
    

    En este código, creamos un objeto TStringList para almacenar los parámetros en formato de clave-valor. Luego añadimos los parámetros a la lista. Después de eso, configuramos la propiedad ContentType de la solicitud en application/x-www-form-urlencoded para indicar que estamos enviando los parámetros en ese formato. Finalmente, realizamos la llamada PUT con la lista de parámetros.

Comments are closed.