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?
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: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 propiedadContentType
de la solicitud enapplication/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.