2014-09-19 55 views
0

我是Mailgun和REST的新手,需要一些幫助。mailgun電子郵件驗證回覆

如果我使用Mailgun提供的代碼:

RestClient client = new RestClient(); 
client.BaseUrl = "https://api.mailgun.net/v2"; 
client.Authenticator = new HttpBasicAuthenticator("api", "xxxx"); 
RestRequest request = new RestRequest(); 
request.Resource = "/address/validate"; 
request.AddParameter("address", "[email protected]"); 
return client.Execute(request); 

如何檢索和處理響應該地址是否有效?

+0

不同於論壇的網站,我們不使用「謝謝」,或者「任何幫助表示讚賞」,或簽名(因此)。請參閱「[應該'嗨','謝謝',標語和致敬從帖子中刪除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be 。-removed - 從 - 個) – 2014-09-19 18:10:33

回答

0

First of You should never post private information such as your public key of such API

只需用驚人的Postman Chrome app你可以看到這樣的要求的結果:

click here看到下面的圖像在全分辨率

enter image description here

,我敢肯定,如果你代替return client.Execute(request);你做

var result = client.Execute(request); 
return result; 

並在return中添加一個斷點,您可以檢查從呼叫傳遞的對象是什麼......未經測試,我確定您可以將result.Content(因爲它是RestSharp附加響應內容的地方)轉換爲對象,使用該對象(或使用dynamic類型)。


現在,測試你的代碼在VS:

click here看到下面的圖片全分辨率

enter image description here

然後你可以使用dynamic對象,如:

click here看全圖下面的圖片

enter image description here

public void GetResponse() 
{ 
    var client = new RestClient(); 
    client.BaseUrl = "https://api.mailgun.net/v2"; 
    client.Authenticator = new HttpBasicAuthenticator("api", "pubkey-e82c8201c292691ad889ace3434df6cb"); 

    var request = new RestRequest(); 
    request.Resource = "/address/validate"; 
    request.AddParameter("address", "[email protected]"); 

    var response = client.Execute(request); 
    dynamic content = Json.Decode(response.Content); 

    bool isValid = content.is_valid; 
    string domain = content.parts.domain; 
} 

和治療就像JSON響應的內容通過:

{ 
    "address": "[email protected]", 
    "did_you_mean": null, 
    "is_valid": true, 
    "parts": { 
     "display_name": null, 
     "domain": "mydomain.com", 
     "local_part": "me" 
    } 
} 
+0

我使用: 動態內容= System.Runtime.Serialization.Json.Decode(response.Content); ,但我得到的錯誤: 編譯器錯誤消息:CS0234:名稱空間'System.Runtime.Serialization.Json'中不存在類型或命名空間名稱'Decode'(缺少程序集引用?) – user2970010 2014-09-19 18:36:47

+0

addded:使用Newtonsoft.Json; 並將代碼更改爲: 動態內容= JsonConvert.DeserializeObject(響應。內容); 現在它的工作原理 – user2970010 2014-09-19 20:16:17

+0

'Json.Decode'來自'System.Web.Helpers'。如果答案以某種方式幫助了你,將其標記爲正確答案,並讓其他人看到你的問題,這是一個正確的答案。 – balexandre 2014-09-20 19:49:00

0

此代碼對我的作品。我沒有使用RESTClient實現和寫我自己的代碼(這工作完全正常)

[System.Web.Services.WebMethod] 
    public static object GetEmailInfo(string UserName) 
    { 
     var http = (HttpWebRequest)WebRequest.Create("https://api.mailgun.net/v2/address/validate?address=" + UserName); 
     http.Credentials = new NetworkCredential("api","public key"); 
     http.Timeout = 5000; 
     try 
     { 
      var response = http.GetResponse(); 
      var stream = response.GetResponseStream(); 
      var sr = new StreamReader(stream); 
      var content = sr.ReadToEnd(); 
      JSON.JsonObject js = new JSON.JsonObject(content); 
      return Convert.ToBoolean(js["is_valid"]); 
     } 
     catch (Exception ex) 
     { 

     } 
    }