2013-02-27 7 views
0

II doit envoyer des données de poste http à un site Web jeter un proxy et recevoir la réponse du serveur. Par exemple, je veux envoyer la demandeHttp Post demande en utilisant tcpClient en utilisant le proxy

request=Encoding.ASCII.GetBytes("POST/HTTP/1.1\r\nHost: example.com\r\nConnection: Close\r\n\r\ntest_check=Hello"); 

Dans mon site, je vérifie si les données de poste est bien sended. Dans ce cas, je renvoie "Ok". D'abord, je quelque chose comme ceci écrivez se:

TcpClient client = new TcpClient(host, port); 
NetworkStream stream = client.GetStream(); 
stream.Write(request, 0, request.Length); 
stream.Flush(); 
while ((count = stream.Read(buffer, 0, buffer.Length)) > 0) 
      response.Append(encoder.GetString(buffer, 0, count)); 

La réponse est vide. Qu'est-ce qui ne va pas? Après cela a fonctionné, je veux envoyer la demande via TcpCLient d'un serveur mandataire. C'est possible?

Merci

Répondre

0

Puisque vous utilisez le protocole HTTP, vous devez utiliser la classe HttpWebRequest qui prend en charge la fixation d'un proxy avec la classe WebProxy.

+0

Ok pour la question proxy, mais que pensez-vous de la première question? – user1845394

+0

Je devrais relire le protocole HTTP, mais votre premier extrait de code ne serait même pas nécessaire si vous utilisez HttpWebRequest et définissez la méthode sur POST. Il pourrait y avoir beaucoup de raisons pour lesquelles une réponse n'a pas été retournée. Je recommanderais Fiddler ou après avoir envoyé la demande avec HttpWebRequest, vous obtiendriez le HttpWebResponse et vous pouvez vérifier les en-têtes pour le code d'état pour voir si vous rencontrez des problèmes ailleurs. Cet espace entre POST et la version du protocole semble manquer, mais encore une fois, je devrais vérifier la spécification. – Justin

Questions connexes