I un serveur TCP simple qui accepte la connexion, obtenir une URL en utilisant http.Get, puis encoder la réponse en utilisant gob. Mais gob ne parvient pas à encoder http.gzipReader. sur le codage lui donne message d'erreur suivant:gob: type non enregistré pour l'interface: http.gzipReader
gob: type not registered for interface: http.gzipReader
Mon code est donné ci-dessous:
package main
import (
"encoding/gob"
"fmt"
"log"
"net"
"net/http"
"os"
)
const (
CONN_HOST = "localhost"
CONN_PORT = "3333"
CONN_TYPE = "tcp"
)
func main() {
// Listen for incoming connections.
l, err := net.Listen(CONN_TYPE, CONN_HOST+":"+CONN_PORT)
if err != nil {
fmt.Println("Error listening:", err.Error())
os.Exit(1)
}
for {
conn, err := l.Accept()
if err != nil {
fmt.Println("Error accepting: ", err.Error())
os.Exit(1)
}
go handleRequest(conn)
}
}
func handleRequest(conn net.Conn) {
res, err :=
http.Get("http://info.cern.ch/hypertext/WWW/TheProject.html")
if err != nil {
log.Fatal(err)
} else {
encoder := gob.NewEncoder(conn)
er := encoder.Encode(res)
if er != nil {
fmt.Println(er)
}
}
conn.Write([]byte("Message received."))
conn.Close()
}
Est-il possible d'encoder http.gzipReaderc ?? J'ai vu un exemple de gob.Register(), mais j'essaie de registrer http.gzipReaderc. Mais incapable de le faire. quelqu'un peut-il me proposer une solution à ce problème?
J'ai reçu cette erreur: 'gob: type non enregistré pour l'interface: http.bodyEOFSignal'. Êtes-vous sûr de vouloir encoder toute la partie de ['http.Response'] (https://golang.org/pkg/net/http/#Response)? Le contenu (page HTML) de la réponse 'http.Get' est disponible via le champ' Body' (qui est une interface et les données elles-mêmes ne sont peut-être pas disponibles immédiatement ou peuvent être encodées dans gzip etc.) et vous devriez le lire en premier dans un tampon (ou créer un wrapper) puis en le passant à l'encodeur de gob. – putu