1

Je suis en train de consommer une API REST et j'ai un problème qu'il me rend fou ...Erreur étrange 400 lors de l'utilisation HttpRequest à consommer REST API

Je créé une dll pour envelopper la couche de consommation de service, et j'ai trouvé que si je consomme les services en utilisant la fonctionnalité interactive C# ça fonctionne bien.

La question est quand je tente de consommer d'une autre DLL, il est de lancer Bad Request exception lors de l'exécution GetResponse()

Le code exécuté est ...

var url = $"{_salesForceInstance}/services/data/{_salesForceVersion}/query/?q=SELECT+Id,Name,AccountId+from+Contact+WHERE+Email+=+'{email}'"; 
      var webRequest = (HttpWebRequest)WebRequest.Create(url); 
      webRequest.ServicePoint.CloseConnectionGroup(webRequest.ConnectionGroupName); 
      webRequest.Method = "GET"; 
      webRequest.ContentType = "application/json"; 
      webRequest.Headers.Add("Authorization", $"Bearer {_authorizationToken}"); 
      var webResponse = webRequest.GetResponse() as HttpWebResponse; 

I également lors du débogage code, pour envoyer la même chose par POSTMAN et ça fonctionne bien ...

Des idées ??? Je suis tout à fait frustré à ce point pourquoi il fonctionne en consommant la dll de C# interactive, mais pas d'un autre dll ...

+1

Alors, ouvrez une copie de [Fiddler] (http://www.telerik.com/fiddler) et assurez-vous que les demandes correspondent vraiment. Ils ne le font presque certainement pas. – spender

+0

Merci! Cela a aidé! – federom

+0

J'ai essayé avec Wireshark .. mais je didintint trouver quelque chose ... il semble que le problème est lié à la version TLS – federom

Répondre

1

Comme dépensier suggéré j'ai essayé avec Fiddler ...

Je trouve que malgré le fait les deux requêtes ont la même apparence (celle de C# interactive et celle de l'application console), dans celle qui renvoyait le code d'erreur HTTP 400, la réponse comprenait le message suivant:

"[{" message ":" TLS 1.0 a été désactivé dans cette organisation. S'il vous plaît utiliser TLS 1.1 ou plus lors de la connexion à Salesforce en utilisant https « » errorCode. « : » UNSUPPORTED_CLIENT « }] »

Ce message n'apparaît pas lors du débogage ...

Enfin je résolu en incluant la ligne décrit ci-dessous dans mon code afin d'utiliser TLS 1.2

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 

Maintenant ça marche !!!

J'espère que cela aidera quelqu'un d'autre!

Merci!