Wie Stelle ich ein httpclient, um eine WEB-API? (einfach als möglichen Weg für meine highscore-Tabelle)

Meinem windows phone client sendet ein Stück JSON steht für den Namen und Punkten... Sollte ich über die Klasse, von der Web-API ? Was ist der code für das senden des Objekts an den server, anstatt die rohen json?

 private void btnCreateSampleScore_Click(object sender, RoutedEventArgs e)
    {
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("http://punkoutersoftware.azurewebsites.net");

            var content = new FormUrlEncodedContent(new[] 
                                                   {
                                                       new KeyValuePair<string, string>("Bob", "2.65")
                                                   });

            var result = client.PostAsync("/api/DrunkMeterScore", content).Result;

            string resultContent = result.Content.ReadAsStringAsync().Result;
            Console.WriteLine(resultContent);

            //DrunkMeterScore dms = new DrunkMeterScore();
            //dms.Name = "Bob";
            //dms.Score = 2.42;
        }

    }

Dem server ist das plain-Web-API-Vorlage

 //POST api/DrunkMeterScore
    public HttpResponseMessage PostDrunkMeterScore(DrunkMeterScore drunkmeterscore)
    {
        if (ModelState.IsValid)
        {
            db.DrunkMeterScores.Add(drunkmeterscore);
            db.SaveChanges();

            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, drunkmeterscore);
            response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = drunkmeterscore.DrunkMeterScoreId }));
            return response;
        }
        else
        {
            return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
        }
    }

edit1:

Ich habe versucht, diese beiden.. beide hängen und nie wieder während der PostAsync Anrufe 🙁

 var client = new HttpClient();
        client.BaseAddress = new Uri("http://punkoutersoftware.azurewebsites.net");

        client.DefaultRequestHeaders.Accept.Add(
            new MediaTypeWithQualityHeaderValue("application/json"));

        var score = new DrunkMeterScore() { Name = "Joe", Score = 2.67 };






        //MediaTypeFormatter jsonFormatter = new JsonMediaTypeFormatter();
        //HttpContent content = new ObjectContent<DrunkMeterScore>(score, jsonFormatter);
        //var resp = client.PostAsync("api/DrunkMeterScore", content).Result;






        //Uri scoreUri = null;
        //HttpResponseMessage response = client.PostAsJsonAsync("api/DrunkMeterScore", score).Result;
        //if (response.IsSuccessStatusCode)
        //{
        //   scoreUri = response.Headers.Location;
        //}
        //else
        //{
        //   Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
        //}
InformationsquelleAutor punkouter | 2013-06-18
Schreibe einen Kommentar