2017-09-21 4 views
0

Essayez comme je pourrais ne pas obtenir la méthode HttpClient.PutAsync pour fonctionner correctement. J'ai réussi à faire fonctionner la méthode GetAsync. Je suis également capable de faire l'appel PUT avec succès dans Postman postman screenshotProblèmes HttpClient PutAsync suspendus ou 404 retournés

Ceci est le code que j'utilise quand je reçois un 404 introuvable.

public static async Task<HttpResponseMessage> PutAsJsonAsync<Contact>(HttpClient client, Contact contact) 
{ 
client.DefaultRequestHeaders.Add("X-API-TOKEN","MyT0k3n"); 
var json = JsonConvert.SerializeObject(contact);  
var stringContent = new StringContent(json, Encoding.UTF8, "application/json"); 
return await client.PutAsync("https://survey.qualtrics.com/API/v3/mailinglists/ML_123456/contacts/MLRP_123456", stringContent); 

} 

La classe Contact a des variables telles que "unsubscribed".

J'ai aussi essayé ce (https://gist.github.com/alexandrevicenzi/9216739) mais quand j'Attend la tâche et le fil se bloque fois sur:

public static Task<HttpResponseMessage> PutJsonAsync(HttpClient client, string requestUri, Type type, object value) 
{ 

    return client.PutAsync(requestUri, new ObjectContent(type, value, new JsonMediaTypeFormatter(), "application/json")); 
} 

Je suis honnêtement pas très familier avec async, attendent ou HttpClient. J'ai utilisé HttpWebRequest et WebRequest dans le passé. J'ai essayé un PUT avec mes anciennes méthodes et j'ai échoué. Quelqu'un a des idées?

+2

par Fiddler et nous montrent le résultat. Je suppose que votre demande n'est pas formatée correctement -> 404. – burnsi

+0

Merci @burnsi !! C'est plutôt embarrassant .. J'aurais dû configurer le fiddler pour https et essayé avant de demander ici. Mon URI de requête manquait un "/". donc naturellement 404. J'étais trop concentré sur la syntaxe et raté la faute de frappe. J'apprécie l'aide, votre commentaire est juste et me conduit à trouver mon problème. Si vous postez comme réponse, je l'accepterai. – hackingchemist

Répondre

2

La plupart du temps lorsque vous recevez un 404 sur une telle tâche, votre URL de demande est malformée.

Astuce:

Essayez Fiddler pour capturer à la fois des demandes et de les comparer en version brute. PARVENIR demande

Fiddler

+0

Cette réponse m'a été utile pour configurer HTTPS dans fiddler https://stackoverflow.com/questions/25440877/fiddler-root-certificate-location – hackingchemist