2017-07-28 8 views
0

Ich muss E-Mails und Seiten auf unserer Website verfolgen. Wir wollen dafür ein WebAPI verwenden, aber ich bin sehr neu und die Beispiele, die ich gefunden habe, waren schwer zu folgen. Hier ist mein Problem:Werte vom Controller an WebAPI übergeben

Ich habe einen EmailTrackerContoller mit Code wie folgt:

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"); 
    } 
} 

Ich habe auch eine WebAPI geschaffen, die eine Httppost Methode hat SaveEmail genannt:

[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 , ""); 
} 

Paar von Fragen auf dies:

  • Wie übergeben Sie Werte vom Controller an den WebApi?
  • Alle einfach zu folgen Beispiele wären toll, wenn Sie einen Link haben, der auch nützlich wäre.
+2

Was meinen Sie mit der Übergabe von Daten vom Controller an den webApi? Controller ist der Einstiegspunkt Ihrer API zu Ihrer App Logik – acostela

+0

Ich bin ein wenig verwirrt. Es gibt Controller-WebAPIs, also senden Sie Werte aus der Ansicht an den Controller WebAPI –

+0

Ich habe eine Website, die dieses Webapi von einem Controller aufrufen muss. Der webApi hat auch einen Controller Ich versuche Werte von der Webseite an die Webapi zu übergeben, damit ich einen Datenbank-Insert erstellen kann. Ich weiß einfach nicht, wie man das webapi, das in der E-Mail und in der Identifikation passiv ist, richtig nennt, und wie man es auf der webapi Seite zurückholt. Ist das sinnvoll, tut mir leid, immer noch ein wenig neu zu MVC und Webapi –

Antwort

1

Der zweite Parameter von PostAsync ist der Inhalt des Aufrufs. Serialisieren Sie das Objekt als JSON, das die gewünschten Werte enthält, und fügen Sie es als Inhalt hinzu.

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

Ändern Sie die Empfangsmethode, um die gewünschten Eigenschaften zu erhalten. Ich würde eine Klasse als Methodenparameter verwenden, aber Sie können [FromBody] mit allen aufgeführten Eigenschaften auch verwenden.

public HttpResponseMessage SaveEmail(EmailSave model) 
+0

Danke, das hat mich gelöst Problem !!! –

Verwandte Themen