Отправка GET/POST запроса сокетами - C#

Узнай цену своей работы

Формулировка задачи:

Здравия. В общем, пытаюсь отправлять GET запрос таким кодом:
Листинг программы
  1. Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  2. socket.Connect(Url, 80);
  3. byte[] contentLenght = Encoding.ASCII.GetBytes(Data);
  4. string[] masRequestString ={
  5. "GET /"+Data+" HTTP/1.1\r\n" ,
  6. "Host: "+Url+"\r\n",
  7. "User-Agent: "+textBox1.Text+"\r\n",
  8. "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n",
  9. "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n",
  10. "Referer: "+textBox2.Text+"\r\n"};
  11. string request = string.Concat(masRequestString);
  12. Byte[] bytesSent = Encoding.ASCII.GetBytes(request);
  13. socket.Send(bytesSent, bytesSent.Length, 0);
  14. Byte[] bytesReceived = new Byte[0x400];
  15. int bytes = socket.Receive(bytesReceived, bytesReceived.Length, 0);
  16. string content = Encoding.ASCII.GetString(bytesReceived, 0, bytes);
Запрос ВРОДЕ отправляется, а смотря на мониторы сниффера - нет. Фиддлер и вайршарк просто не видят этот запрос, почему так?
Вверх
Вверх

Решение задачи: «Отправка GET/POST запроса сокетами»

textual
Листинг программы
  1. string address = "http://example.com/folder/file?a=1&b=2";
  2. using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
  3. {
  4.     Uri uri = new Uri(address);
  5.     if (!uri.Scheme.Equals("http", StringComparison.OrdinalIgnoreCase) && !uri.Scheme.Equals("https", StringComparison.OrdinalIgnoreCase))
  6.     {
  7.         return;
  8.     }
  9.     socket.Connect(uri.Host, uri.Port);
  10.     string req = string.Format(
  11.         @"GET {0} HTTP/1.1
  12. Host: {1}
  13. User-Agent: {2}
  14. Connection: close
  15.  
  16. "
  17.         , uri.PathAndQuery
  18.         , uri.Host
  19.         , "MegaSuperApplication"
  20.     );
  21.     socket.Send(Encoding.ASCII.GetBytes(req));
  22.     byte[] responseBytes = new byte[60000];
  23.     int received = socket.Receive(responseBytes);
  24.     string responsePart = Encoding.ASCII.GetString(responseBytes, 0, received);
  25. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы