Перевод слова 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д