So erhalten Sie JSON-Daten von Connection Golang
Ich verwende eine in Golang geschriebene TCP-Verbindung, um eine Curl-Anfrage von der Konsole zu senden. Es handelt sich also im Grunde um einen Datenfluss. Mit dem folgenden Code kann ich die Daten erfolgreich empfangen und im Puffer speichern
func PushDataToBuffer(bufferedChannel chan []byte, conn net.Conn) { defer conn.Close() fmt.Println("pushing messages into buffer...") buffer := make([]byte, 2048) // 2048 = assumption for reasonable event byte size for { n, err := conn.Read(buffer) if err != nil { fmt.Println("read error: ", err) continue // to continue listening for connections } bufferedChannel <- buffer[:n] } }
Aber wenn ich versuche, diese Daten mit diesem Code zu lesen:
for data := range bufferedChannel { fmt.Println("The len of buffer is: ", len(bufferedChannel)) dataObject := models.Event{} err := json.Unmarshal(data, &dataObject) }
Ich erhalte die folgende Fehlermeldung
Invalid character 'P' looking for beginning of value 2024/01/29 09:40:31 syntax error at byte offset 1
Als ich die Daten selbst ausgedruckt habe, habe ich das gesehen
POST / HTTP/1.1 Host: localhost:8952 User-Agent: curl/7.77.0 Accept: */* Content-Type: application/json Content-Length: 232 {\"customer\":\"Ada\",\"eventtype\":\"BuyingApples\",\"time\":\"0001-01-01T00:00:00Z\",\"specifics\":[{\"Key\":\"Shop\",\"Value\":\"Bakery\"},{\"Key\":\"Location\",\"Value\":\"Downtown\"},{\"Key\":\"recommends\",\"Value\":\"yes\"}]}
Von oben können Sie deutlich erkennen, wo das Problem liegt. Es fügt den Daten Header hinzu, also ist POST
中的 P
das, worüber sich Golang beschwert. Deshalb kann ich es nicht unmarshalieren. Meine Frage lautet also:
Wie sende ich die Daten an den Server oder kürze sie, sobald sie ankommen? Alles, was ich verwenden werde, ist der JSON-Teil:
{\"customer\":\"Ada\",\"eventtype\":\"BuyingApples\",\"time\":\"0001-01-01T00:00:00Z\",\"specifics\":[{\"Key\":\"Shop\",\"Value\":\"Bakery\"},{\"Key\":\"Location\",\"Value\":\"Downtown\"},{\"Key\":\"recommends\",\"Value\":\"yes\"}]}
P.S. – Ich verwende eine TCP-Verbindung, um die Daten abzurufen, anstelle von http
Ich habe online nach verschiedenen Lösungen gesucht, aber keine gefunden, die zu meinem Anwendungsfall passt
Richtige Antwort
cURL ist kein TCP-Client. Es ist ein HTTP-Client und generiert natürlich einige für das Protokoll native Header (z. B. Anforderungsmethode und -pfad). Dies ist es, was letztendlich über die TCP-Verbindung gesendet wird. Daher besteht eine Diskrepanz zwischen dem, was der Server erwartet (einfaches TCP) und dem, was der Client sendet (HTTP).
Sie sollten Ihren Servercode aktualisieren, um die Rohdaten in eine HTTP-Anfrage zu analysieren, z. B. http .ReadRequest, oder einfach einen Client verwenden, der die erwartete Nutzlast über das Netzwerk sendet – also reines TCP. Netcat macht dies einfach. Ohne viel über das Problem zu wissen, das Sie lösen möchten, würde ich standardmäßig den letzteren Ansatz empfehlen (denn warum HTTP senden, wenn Sie überhaupt TCP benötigen?).
Das obige ist der detaillierte Inhalt vonSo erhalten Sie JSON-Daten von Connection Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



OpenSSL bietet als Open -Source -Bibliothek, die in der sicheren Kommunikation weit verbreitet sind, Verschlüsselungsalgorithmen, Tasten und Zertifikatverwaltungsfunktionen. In seiner historischen Version sind jedoch einige Sicherheitslücken bekannt, von denen einige äußerst schädlich sind. Dieser Artikel konzentriert sich auf gemeinsame Schwachstellen und Antwortmaßnahmen für OpenSSL in Debian -Systemen. DebianopensL Bekannte Schwachstellen: OpenSSL hat mehrere schwerwiegende Schwachstellen erlebt, wie z. Ein Angreifer kann diese Sicherheitsanfälligkeit für nicht autorisierte Lesen sensibler Informationen auf dem Server verwenden, einschließlich Verschlüsselungsschlüssel usw.

In dem Artikel wird erläutert, wie das PPROF -Tool zur Analyse der GO -Leistung verwendet wird, einschließlich der Aktivierung des Profils, des Sammelns von Daten und der Identifizierung gängiger Engpässe wie CPU- und Speicherprobleme.Character Count: 159

In dem Artikel werden Schreiben von Unit -Tests in GO erörtert, die Best Practices, Spottechniken und Tools für ein effizientes Testmanagement abdecken.

In der Bibliothek, die für den Betrieb der Schwimmpunktnummer in der GO-Sprache verwendet wird, wird die Genauigkeit sichergestellt, wie die Genauigkeit ...

In dem Artikel werden mit Tabellensteuerungstests in GO eine Methode mit einer Tabelle mit Testfällen getestet, um Funktionen mit mehreren Eingaben und Ergebnissen zu testen. Es zeigt Vorteile wie eine verbesserte Lesbarkeit, verringerte Vervielfältigung, Skalierbarkeit, Konsistenz und a

In dem Artikel wird das Reflect -Paket von Go, das zur Laufzeitmanipulation von Code verwendet wird, von Vorteil für die Serialisierung, generische Programmierung und vieles mehr. Es warnt vor Leistungskosten wie langsamere Ausführung und höherer Speichergebrauch, beraten die vernünftige Verwendung und am besten am besten

In dem Artikel werden die Verwaltungs -Go -Modulabhängigkeiten über Go.mod erörtert, die Spezifikationen, Aktualisierungen und Konfliktlösung abdecken. Es betont Best Practices wie semantische Versioning und reguläre Updates.

Das Problem der Warteschlange Threading In Go Crawler Colly untersucht das Problem der Verwendung der Colly Crawler Library in Go -Sprache. Entwickler stoßen häufig auf Probleme mit Threads und Anfordern von Warteschlangen. � ...
