2017-07-28 223 views
0

我需要跟蹤我們網站上的電子郵件和頁面。我們想爲此使用WebAPI,但是我很新,我發現的例子很難遵循。這裏是我的問題:將控制器的值傳遞給WebAPI

我有一個EmailTrackerContoller下面類似的代碼如下:

public class EmailTrackingController : Controller 
{ 
    [OutputCache(NoStore = true , Duration = 0)] 
    [HttpPost] 
    public ActionResult GetPixel(string email, Guid emailID) { 

     var client = new HttpClient(); 
     var endpoint = "http://localhost:2640/api/EmailTracker/SaveEmail"; --path to my API 
     var response = await client.PostAsync(endpoint, null); --this does not work 

     const string clearGif1X1 = "R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="; 
     return new FileContentResult(Convert.FromBase64String(clearGif1X1) , "image/gif"); 
    } 
} 

我也創建具有HttpPost方法一的WebAPI調用SaveEmail:

[HttpPost] 
public HttpResponseMessage SaveEmail([FromBody]string value) { --How do I get the Email and Guid I need from here? 

    var a = new DL.EmailTracking(); 
    a.Insert("<email>" , Guid.NewGuid()); 

    return Request.CreateResponse(HttpStatusCode.Accepted , ""); 
} 

上的問題,夫婦這個:

  • 你如何將值從控制器傳遞給WebApi?
  • 任何容易遵循的例子都會很棒,如果你有一個有用的鏈接。
+2

通過將數據從控制器傳遞給webApi,你的意思是什麼?控制器是你的API到你的應用邏輯的入口點 – acostela

+0

我有點困惑。有控制器WebAPI的,所以你從視圖發送值到控制器WebAPI –

+0

我有一個網站,需要從控制器調用此webapi。該webApi有一個控制器,以及我試圖將值的形式傳遞給webapi,以便我可以預製一個數據庫插入。我只是不知道如何正確地調用通過電子郵件和ID傳遞的webapi,以及如何在webapi一側進行檢索。這是否有道理,對不起,仍然有點新MVC和Webapi的 –

回答

1

PostAsync的第二個參數是調用的內容。 將對象序列化爲包含所需值的JSON並將其添加爲內容。

var obj = new { Email = "[email protected]" }; 
HttpStringContent msg = new HttpStringContent(JsonConvert.SerializeObject(obj)); 
var response = await client.PostAsync(endpoint, msg); 

修改接收方法以接收所需的屬性。我將使用類作爲方法參數,但您也可以使用[FromBody]以及列出的所有屬性。

public HttpResponseMessage SaveEmail(EmailSave model) 
+0

謝謝,這解決了我的問題! –