Posten Sie JSON auf einem Server in C#

Bilal Shahid 15 Februar 2024
  1. Verwenden Sie HttpWebRequest, um JSON an einen Server in C# zu senden
  2. Verwenden Sie new HttpClient(), um JSON auf einem Server in C# zu posten
Posten Sie JSON auf einem Server in C#

Was ist also JSON? JSON steht für Javascript Object Notation. Es folgt einer Struktur, die der Zuordnung eines Werts zu einem Schlüssel in eckigen Klammern ähnelt.

Heute lernen wir, wie man ein JSON in C# an einen Server sendet.

Verwenden Sie HttpWebRequest, um JSON an einen Server in C# zu senden

Um die Webdienste zu verwenden, müssen Sie Ihre IDE in .NET ASP booten, einem Webframework mit C#-Unterstützung im Backend.

Innerhalb der gestarteten ASP.NET-Anwendung müssen Sie nun eine neue ASPX-Seite hinzufügen, um eine Schaltfläche zum Posten von JSON als Text und ein weiteres Label zum Anzeigen des geposteten JSON-Texts hinzuzufügen.

TASTE:

C# Post JSON – Button

ETIKETT:

C# Post JSON – Label

Die Webseite wird wie folgt angezeigt:

C# Post JSON - Webseite

Wir werden JSON auf dieser Webseite posten, sobald auf die Schaltfläche geklickt wird. Der JSON wird im Textfeld unter der Schaltfläche angezeigt.

Lassen Sie uns nun fortfahren und innerhalb der Schaltflächenklickfunktion die Anfrage zum Senden der Daten erstellen und dann den Statuscode lesen, der uns mitteilt, ob die Anfrage erfolgreich war oder nicht.

var url = "https://reqres.in/api/users";

var httpRequest = (HttpWebRequest)WebRequest.Create(url);
httpRequest.Method = "POST";

httpRequest.Accept = "application/json";
httpRequest.ContentType = "application/json";

var data =
    @"{
    ""name"": ""morpheus"",
    ""job"": ""leader"",
    ""id"": ""264"",
    ""createdAt"": ""2022-07-09T07:33:55.681Z""
}";

using (var streamWriter = new StreamWriter(httpRequest.GetRequestStream())) {
  streamWriter.Write(data);
}

var httpResponse = (HttpWebResponse)httpRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) {
  var result = streamReader.ReadToEnd();
}

this.jsontext.Text = httpResponse.StatusCode.ToString();

Hier haben wir die URL verwendet, eine kostenlose URL zum Posten und Abrufen von Daten. Das Bild für den Statuscode nach dem Vorgang ist unten dargestellt:

AUSGANG:

C# Post JSON – Webseitenstatuscode

Für die URL erstellen Sie die Variable httpRequest. Dann tendieren Sie dazu, die Anforderung Akzeptieren zu definieren, die auf JSON gesetzt ist. Sobald der streamWriter die Daten auf den Server schreibt, wird der aus der Antwort abgerufene StatusCode in den Text der zuvor definierten jsontext-Variable eingefügt.

Falls Sie JSON nicht selbst erstellen möchten, können Sie den Serializer wie folgt verwenden:

string json = new JavaScriptSerializer().Serialize(
    new { name = "morpheus", job = "leader", id = "264", createdAt = "2022-07-09T07:33:55.681Z" });

Und dann schreiben Sie es wie folgt:

streamWriter.Write(json);

Um dies zu implementieren, müssen Sie jedoch den Namensraum System.Web.Script.Serialization einbinden.

Der vollständige Code ist unten dargestellt:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
using System.Web.Script.Serialization;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication2 {
  public partial class WebForm1 : System.Web.UI.Page {
    protected void Page_Load(object sender, EventArgs e) {}

    protected void json_Click(object sender, EventArgs e) {
      var url = "https://reqres.in/api/users";

      var httpRequest = (HttpWebRequest)WebRequest.Create(url);
      httpRequest.Method = "POST";

      httpRequest.Accept = "application/json";
      httpRequest.ContentType = "application/json";

      // HANDCRAFTED JSON
      var data =
          @"{
    ""name"": ""morpheus"",
    ""job"": ""leader"",
    ""id"": ""264"",
    ""createdAt"": ""2022-07-09T07:33:55.681Z""
}";

      // SERIALIZED JSON
      string json =
          new JavaScriptSerializer().Serialize(new { name = "morpheus", job = "leader", id = "264",
                                                     createdAt = "2022-07-09T07:33:55.681Z" });

      using (var streamWriter = new StreamWriter(httpRequest.GetRequestStream())) {
        streamWriter.Write(json);
      }

      var httpResponse = (HttpWebResponse)httpRequest.GetResponse();
      using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) {
        var result = streamReader.ReadToEnd();
      }

      this.jsontext.Text = httpResponse.StatusCode.ToString();
    }
  }
}

Verwenden Sie new HttpClient(), um JSON auf einem Server in C# zu posten

Wir können ganz einfach den folgenden Code verwenden, um JSON an den Server zu senden:

using (var client = new HttpClient()) {
  var result = client.PostAsync(url, new StringContent(json, Encoding.UTF8, "application/json"));
}

Dieser verwendet CLIENT.POSTASYNC(), um die POST-Anfrage zu stellen. Der vollständige Code ist unten dargestellt:

protected void json_Click(object sender, EventArgs e) {
  var url = "https://reqres.in/api/users";

  var httpRequest = (HttpWebRequest)WebRequest.Create(url);
  httpRequest.Method = "POST";

  httpRequest.Accept = "application/json";
  httpRequest.ContentType = "application/json";

  // HANDCRAFTED JSON
  var data =
      @"{
               ""name"": ""morpheus"",
               ""job"": ""leader"",
               ""id"": ""264"",
               ""createdAt"": ""2022-07-09T07:33:55.681Z""
}";

  // SERIALIZED JSON
  string json =
      new JavaScriptSerializer().Serialize(new { name = "morpheus", job = "leader", id = "264",
                                                 createdAt = "2022-07-09T07:33:55.681Z" });

  using (var client = new HttpClient()) {
    var result = client.PostAsync(url, new StringContent(json, Encoding.UTF8, "application/json"));
  }

  // using (var streamWriter = new StreamWriter(httpRequest.GetRequestStream()))
  //{
  //     streamWriter.Write(json);
  // }

  var httpResponse = (HttpWebResponse)httpRequest.GetResponse();
  using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) {
    var result = streamReader.ReadToEnd();
  }
  this.jsontext.Text = httpResponse.StatusCode.ToString();
}

Ersetzen Sie die oben angegebene Funktion und sehen Sie sich dann die Ergebnisse an. Der Code wird jetzt perfekt funktionieren.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

Verwandter Artikel - Csharp JSON

Verwandter Artikel - Csharp Server