Перевод слова POST-запросом - C#

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

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

Здравствуйте. Пытаюсь перевести слово POST-запросом через переводчик m.translate.ua. Сниффером отловил данные. Пытаюсь получить Response Content и дальше его парсить. Получаю исключение: "Запрос был прерван: Запрос отменен." Вот мои наработки. Слово, естественно, не переводит, прошу помощи, советов, направлений. Буду благодарен. Headers
(Request-Line):POST / HTTP/1.1 Host:m.translate.ua Connection:keep-alive Cache-Control:max-age=0 Origin:http://m.translate.ua Upgrade-Insecure-Requests:1 User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36 OPR/42.0.2393.517 Content-Type:application/x-www-form-urlencoded Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Referer:http://m.translate.ua/ Accept-Encoding:gzip, deflate, lzma Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 Cookie:__utma=188194487.1220606349.1486128467.1486128467.1486239450.2; __utmb=188194487.1.10.1486239450; __utmc=188194487; __utmz=188194487.1486239450.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided) Content-Length:108
Post data
LangFrom en LangTo ru Subject ** SrcTxt translated Translate Перевод
Листинг программы
  1. HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://m.translate.ua");
  2. string postData = "LangFrom=en&LangTo=ru&Subject=**&SrcTxt=translated&Translate=Перевод";
  3. req.Method = "POST";
  4. req.Host = "m.translate.ua";
  5. req.Headers.Add("Cache-Control", "max-age=0");
  6. req.Headers.Add("Origin", "http://m.translate.ua");
  7. req.Headers.Add("Upgrade-Insecure-Requests", "1");
  8. req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36 OPR/42.0.2393.517";
  9. req.ContentType = "application/x-www-form-urlencoded";
  10. req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
  11. req.Referer = "http://m.translate.ua/";
  12. req.Headers.Add("Accept-Encoding", "gzip, deflate, lzma");
  13. req.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
  14. req.ContentLength = postData.Length;
  15. StreamWriter sw = new StreamWriter(req.GetRequestStream());
  16. sw.Write(postData);
  17. sw.Close();
  18. HttpWebResponse response = (HttpWebResponse)req.GetResponse();
  19. StreamReader sr = new StreamReader(response.GetResponseStream());
  20. return sr.ReadToEnd();

Решение задачи: «Перевод слова POST-запросом»

textual
Листинг программы
  1. static string GetResponse(string url)
  2.         {
  3.             HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
  4.             string postData = "LangFrom=en&LangTo=ru&Subject=**&SrcTxt=hello babe&Translate=Перевод";
  5.  
  6.             var postBytes = Encoding.UTF8.GetBytes(postData);
  7.  
  8.             req.Method = "POST";
  9.             req.Host = "m.translate.ua";
  10.             req.KeepAlive = false;
  11.             req.Headers.Add("Cache-Control", "max-age=0");
  12.             req.Headers.Add("Origin", "http://m.translate.ua");
  13.             req.Headers.Add("Upgrade-Insecure-Requests", "1");
  14.             req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36 OPR/42.0.2393.517";
  15.             req.ContentType = "application/x-www-form-urlencoded";
  16.             req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
  17.             req.Referer = "http://m.translate.ua/";
  18.             req.Headers.Add("Accept-Encoding", "gzip, deflate, lzma");
  19.             req.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
  20.             req.ContentLength = postBytes.Length;
  21.             req.AutomaticDecompression = DecompressionMethods.GZip;
  22.  
  23.             using (var stream = req.GetRequestStream())
  24.             using (var sw = new BinaryWriter(stream))
  25.                 sw.Write(postBytes);
  26.  
  27.             HtmlDocument document = new HtmlDocument();
  28.             HttpWebResponse response = (HttpWebResponse)req.GetResponse();
  29.             using (var stream = response.GetResponseStream())
  30.             using (var reader = new StreamReader(stream))
  31.                 document.LoadHtml(reader.ReadToEnd());
  32.  
  33.             return document.DocumentNode.Descendants("div").ToArray()[12].InnerText;
  34.         }

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


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

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

12   голосов , оценка 4.167 из 5

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

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

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