Перевод слова POST-запросом - C#
Формулировка задачи:
Здравствуйте. Пытаюсь перевести слово POST-запросом через переводчик m.translate.ua. Сниффером отловил данные. Пытаюсь получить Response Content и дальше его парсить. Получаю исключение: "Запрос был прерван: Запрос отменен." Вот мои наработки. Слово, естественно, не переводит, прошу помощи, советов, направлений. Буду благодарен.
Headers
Post data
(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
LangFrom en
LangTo ru
Subject **
SrcTxt translated
Translate Перевод
Листинг программы
- HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://m.translate.ua");
- string postData = "LangFrom=en&LangTo=ru&Subject=**&SrcTxt=translated&Translate=Перевод";
- req.Method = "POST";
- req.Host = "m.translate.ua";
- req.Headers.Add("Cache-Control", "max-age=0");
- req.Headers.Add("Origin", "http://m.translate.ua");
- req.Headers.Add("Upgrade-Insecure-Requests", "1");
- 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";
- req.ContentType = "application/x-www-form-urlencoded";
- req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
- req.Referer = "http://m.translate.ua/";
- req.Headers.Add("Accept-Encoding", "gzip, deflate, lzma");
- req.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
- req.ContentLength = postData.Length;
- StreamWriter sw = new StreamWriter(req.GetRequestStream());
- sw.Write(postData);
- sw.Close();
- HttpWebResponse response = (HttpWebResponse)req.GetResponse();
- StreamReader sr = new StreamReader(response.GetResponseStream());
- return sr.ReadToEnd();
Решение задачи: «Перевод слова POST-запросом»
textual
Листинг программы
- static string GetResponse(string url)
- {
- HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
- string postData = "LangFrom=en&LangTo=ru&Subject=**&SrcTxt=hello babe&Translate=Перевод";
- var postBytes = Encoding.UTF8.GetBytes(postData);
- req.Method = "POST";
- req.Host = "m.translate.ua";
- req.KeepAlive = false;
- req.Headers.Add("Cache-Control", "max-age=0");
- req.Headers.Add("Origin", "http://m.translate.ua");
- req.Headers.Add("Upgrade-Insecure-Requests", "1");
- 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";
- req.ContentType = "application/x-www-form-urlencoded";
- req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
- req.Referer = "http://m.translate.ua/";
- req.Headers.Add("Accept-Encoding", "gzip, deflate, lzma");
- req.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
- req.ContentLength = postBytes.Length;
- req.AutomaticDecompression = DecompressionMethods.GZip;
- using (var stream = req.GetRequestStream())
- using (var sw = new BinaryWriter(stream))
- sw.Write(postBytes);
- HtmlDocument document = new HtmlDocument();
- HttpWebResponse response = (HttpWebResponse)req.GetResponse();
- using (var stream = response.GetResponseStream())
- using (var reader = new StreamReader(stream))
- document.LoadHtml(reader.ReadToEnd());
- return document.DocumentNode.Descendants("div").ToArray()[12].InnerText;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д