2017-04-21 5 views
0

Tout fonctionne bien sur Postman avec x-www-from-urlencoded et authentification de base. Maintenant, en essayant de me salir les mains, je reçois simplement le code de statut 200 avec rien sur le mailgun, aucun journal enregistré.Réponse de maingun avec OK, mais rien ne se passe

using (var client = new HttpClient()) 
{ 
    client.BaseAddress = new Uri("https://api.mailgun.net/v3"); 

    client.DefaultRequestHeaders.Authorization = 
    new AuthenticationHeaderValue("api", "key-withheld-till-a-verdict-has-passed"); 

    var msg = new List<KeyValuePair<string, string>> 
    { 
    new KeyValuePair<string, string>("from", 
     $"Excited User <[email protected]>"), 
    new KeyValuePair<string, string>("to","[email protected]"), 
    new KeyValuePair<string, string>("subject", "Test Please Do Not Reply"), 
    new KeyValuePair<string, string>("text","Thanks for borrowing me your inbox") 
    }; 

    var request = new HttpRequestMessage(HttpMethod.Post, 
    "sandboxSOMEGUIDHERE.mailgun.org/messages"); 

    request.Content = new FormUrlEncodedContent(msg); 

    var response = await client.SendAsync(request); 
    // I get 200 status code 

    var result = await response.Content.ReadAsStringAsync(); 
    //I get result = "Mailgun Magnificent API"   
} 
+0

Cela ne semble pas être la bonne réponse. Vous êtes sûr d'utiliser le point de terminaison URL/API correct? – FrankerZ

+0

J'ai testé avec "Postman" et tout a fonctionné parfaitement. –

+0

Jetez un coup d'oeil [ici] (http://stackoverflow.com/questions/18924996/logging-request-response-messages-when-using-httpclient) et enregistrez votre demande. Recherchez les différences entre la demande de facteur et la requête C#. – FrankerZ

Répondre

0

Tout d'abord, il se trouve que je recevais le BaseAddressnot right. J'ai dû placer une barre oblique à la fin de la BaseAddress.

client.BaseAddress = new Uri("https://api.mailgun.net/v3/"); 

sans la barre oblique, je postais à (note v3 manque),

https://api.mailgun.net/sandboxSOMEGUIDHERE.mailgun.org/messages 

Après de tri, un autre problème a émergé 401 - ANAUTHORIZED. Et avec l'aide de ce SO answer que je fais,

var byteArray = new UTF8Encoding() 
    .GetBytes("api:key-withheld-till-a-verdict-has-passed"); 
client.DefaultRequestHeaders.Authorization = 
    new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray)); 

Mais la raison pour laquelle mailgun réagissait avec Ok restent encore mystérieux. Pour étudier plus avant, je Postman pour poster à,

https://api.mailgun.net/sandboxSOMEGUIDHERE.mailgun.org/messages 

et à ma grande surprise, Mailgun mystérieusement répondu avec Ok.