2016-05-11 6 views
0

Ich arbeite am Rest Dienstleistungen, die ein externes Reiseportal api ist, das im json Format spricht. Ich möchte eine Aktionsmethode erstellen, um Benutzername und Passwort an diese API-URL zu senden. Ich bin in der Lage, es in Fiddler zu tun, aber nicht wissen, wie Informationen in Web-API-Aktion Methode zu übertragen.diese URL wird eine Token-ID zurückgegeben, die ich für alle Sub-Anfrage verwendet werde. Meine Fragen--Wie authentifiziere ich mich an externe Resturl in web api

Ich überweise Benutzername und Passwort von der Ansichtsseite zum Controller über formCollection. Ich möchte wissen, wie man jsonArray mit Anmeldeinformationen zu diesen Anfrage-Kopfzeilen hinzufügen und die Antwort zurück erhalten.

 [HttpPost] 
    public IHttpActionResult About(FormCollection form) 
    { 
     string url = "http://someurl.com//api/PersonalDetails/GetPersonalDetails"; 
     using (HttpClient client = new HttpClient()) 
     { 
      client.BaseAddress = new Uri(url); 
      client.DefaultRequestHeaders.Accept.Clear(); 
      client.DefaultRequestHeaders.Accept.Add(new 
         Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); 
     } 

Die JSON-Array ist so etwas wie dieses:

{ 
    "ClientId": "ApiIntegration", 
    "UserName": "xxxxxx", 
    "Password": "[email protected]", 
    "EndUserIp": "192.168.11.120" 
    } 

ich dieses Array mit Parametern an diese URL senden möchten. aber nicht wissen, wie es geht. Ich habe versucht, anonyme Methode zu erstellen und übergeben Wert an Anforderung Header. Der Versuch, so etwas wie dieses:

 var arr = new 
     { 
      ClientId = "ApiIntegration", 
      UserName = Convert.ToString(form["UserName"].ToString()), 
      Password = Convert.ToString(form["Password"].ToString()), 
      EndUserIp = "192.168.11.120" 
     }; 

In Fiedler, es war sehr einfach. Ich habe einfach alle Credentials in Response Body und in Request Headers, setzen Sie den Content-Type auf application/json und erhalten Sie alle Daten zurück.

Bitte helfen Sie mir jemand.

Antwort

1

Wenn Sie einfach auf diesen Endpunktdaten stellen:

string url = "http://someurl.com//api/PersonalDetails/GetPersonalDetails"; 
using (var client = new HttpClient()) 
{ 
    var payload = JsonConvert.SerializeObject(new 
    { 
     ClientId = "ApiIntegration", 
     UserName = Convert.ToString(form["UserName"].ToString()), 
     Password = Convert.ToString(form["Password"].ToString()), 
     EndUserIp = "192.168.11.120" 
    }); 

    var response = await client.PostAsync(url, new StringContent(payload, Encoding.UTF8, "application/json")); 

    var json = await response.Content.ReadAsStringAsync(); 

    // deserialize the json and get your token id 
} 
+0

Thnks für Ihre Hilfe werde ich versuchen, es – duke

+0

eine weitere ques wird die erzeugte Token-ID für alle nachfolgende Anforderung verwendet feststellen, ob eine Web-API-Support-Sitzung oder ich sollte Caching verwenden, um Token-ID zu speichern ?? – duke

+0

Das ist eine Antwort auf eine andere Frage :) Ich würde es wahrscheinlich in einem verteilten Cache behalten. – peco

Verwandte Themen