2017-07-28 164 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

谢谢,这解决了我的问题! –