[英]Passing values from controller to 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");
}
}
我还创建了一个WebAPI,该WebAPI的HttpPost方法称为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 , "");
}
关于此的几个问题:
PostAsync
的第二个参数是调用的内容。 将对象序列化为包含所需值的JSON并将其添加为内容。
var obj = new { Email = "mail@mail.com" };
HttpStringContent msg = new HttpStringContent(JsonConvert.SerializeObject(obj));
var response = await client.PostAsync(endpoint, msg);
修改接收方法以接收所需的属性。 我将使用一个类作为methods参数,但是您也可以将[FromBody]
与列出的所有属性一起使用。
public HttpResponseMessage SaveEmail(EmailSave model)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.