Déposez un TRESTClient, TRESTRequest et TRESTRepsonse sur un formulaire.

Définissez les RESTClient.BaseURL, RESTRequest.Method et Resource, ajoutez également un paramètre d'en-tête "Content-Type" avec une valeur de "application/json".

Ajoutez une chaîne JSON à l'aide de RESTRequest.AddBody, puis affichez le RESTRequest.ContentType.

Il affiche ctAPPLICATION_X_WWW_FORM_URLENCODED au lieu de ctAPPLICATION_JSON. Cela provoque le serveur pour renvoyer une erreur lorsque RESTRequest.Execute() est exécuté.

Comment forcer la demande à utiliser le type de contenu correct lorsque la propriété ne peut pas être affectée?

3
SiBrit 4 nov. 2019 à 04:04

1 réponse

Après avoir regardé le code source REST.Client, si vous spécifiez le type de contenu en utilisant ceci:

  AParameter := RESTRequest.Params.AddItem;
  AParameter.ContentType := ctAPPLICATION_JSON;
  AParameter.name := 'Content-Type';
  AParameter.Value := 'application/json';

Au lieu de cela:

  RESTRequest.Params.AddHeader('Content-Type', 'application/json');

Ensuite, la propriété TRESTRequest.ContentType retourne avec la valeur correcte, et c'est la valeur utilisée pendant TRESTRequest.Execute.

5
tpetert 4 nov. 2019 à 04:07