6
votes

Comment créer une demande HTTP manuellement dans .NET?

J'aimerais créer mes propres demandes HTTP personnalisées. La classe WebClient est très cool, mais elle crée automatiquement les demandes HTTP. Je pense que je dois créer une connexion réseau sur le serveur Web et transmettre mes données sur ce flux, mais je ne connais pas les cours de bibliothèque qui soutiendraient ce genre de chose.

(contexte, je travaille sur un code pour une classe de programmation Web que j'enseigne. Je veux que mes étudiants comprennent les bases de ce qui se passe dans la "boîte noire" de http.)


0 commentaires

5 Réponses :


4
votes

Utilisez le WebRequest ou Webresponse classes, selon les besoins.

Si vous devez aller au niveau inférieur à celui fourni, regardez les autres systèmes System.Net.Sockets. * Classes client telles que tcpclient .


0 commentaires

3
votes

Consultez System.net. Sockets.tcpclient Si vous souhaitez écrire votre propre client de niveau bas. Pour HTTP GET'S'S'S'S'S'S'S'S'S's Vous pouvez utiliser httpwebrequest < / code> et httpwebrevonse cours cependant.

Si vous êtes vraiment masochiste, vous pouvez aller plus bas que tcpclient et implémenter votre propre socket , voir "href =" http://msdn.microsoft.com /en-us/library/system.net.sockets.socket.aspx "rel =" Nofollow Noreferrer "> Classe de socket .


4 commentaires

Yikes. Le long chemin à long terme à une demande Web.


L'utilisation de TCPClient nécessiterait également qu'il comprenne le protocole Telnet que HTTP est construit.


@John Saunders: HTTP n'est pas construit sur le protocole Telnet. Malgré le fait que l'on puisse utiliser le client Telnet pour se connecter à un serveur Web.


@IGOR: Je vois que tu as raison. Je dois me le confondre avec FTP.




21
votes

Pour bien comprendre les internes du protocole HTTP, vous pouvez utiliser Tcpclient classe: xxx pré>

Une autre possibilité est de Activer le traçage en mettant ce qui suit dans votre app.config code> et utilisez simplement WebClient Pour effectuer une requête HTTP: P> xxx pré>

alors vous pouvez exécuter un appel http:

using (var client = new WebClient())
{
    var result = client.DownloadString("http://www.google.com");
}


1 commentaires

Exemple génial, j'ai hâte de l'essayer. C'est un excellent moyen de visualiser ce qui se passe. Merci



1
votes

Utilisez Wfetch pour la démonstration.

Quant à la programmation, httpwebrequest vous permet de contrôler un peu de la demande - encore une fois si c'est pour une démonstration, j'utiliserais Wireshark pour renifler ce qui se passe sur le fil lorsque vous faites diverses tâches avec le httpwebrequest


0 commentaires