Maison >développement back-end >Golang >Comment analyser les requêtes et les réponses HTTP à partir d'un fichier texte dans Go ?
Analyse des requêtes et des réponses HTTP à partir d'un fichier texte dans Go
Introduction
Cette question se concentre sur l'analyse un fichier texte qui contient un flux de requêtes et de réponses HTTP dans une tranche Go de structures de connexion. Chaque structure de connexion comprend une requête et une réponse HTTP.
Aperçu du problème
Étant donné un fichier texte contenant des requêtes et des réponses HTTP, la tâche consiste à l'analyser dans une []tranche de connexion. La fonction http.ReadRequest peut être utilisée pour analyser les requêtes. Cependant, il n'y a pas de fonction intégrée pour analyser les réponses.
Mise en œuvre
La solution implique les étapes suivantes :
Création d'un lecteur tamponné :
buf := bufio.NewReader(r)
où r est l'instance io.Reader représentant le fichier texte.
Analyse itérative :
for { req, err := http.ReadRequest(buf)
a. Utilisez http.ReadRequest pour analyser le prochaine requête dans le flux.
b. Vérifier EOF (err == io.EOF). Si atteint, sortez de la boucle.
c. Si une erreur se produit, renvoyez le flux analysé avec l'erreur.
Analyse des réponses :
resp, err := http.ReadResponse(buf, req)
Gestion du corps de la réponse :
b := new(bytes.Buffer) io.Copy(b, resp.Body) resp.Body.Close() resp.Body = ioutil.NopCloser(b)
Population du flux :
stream = append(stream, Connection{Request: req, Response: resp})
Fin de boucle :
if err == io.EOF { break }
Exemple Utilisation :
f, err := os.Open("/tmp/test.http") stream, err := ReadHTTPFromFile(f)
Conclusion
Cette méthode analyse efficacement les requêtes et les réponses HTTP d'un fichier texte et remplit une tranche []Connection avec le données analysées. Il gère correctement les corps de réponse et garantit une analyse correcte de plusieurs demandes et réponses dans un flux pipeline.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!