Перевод слова 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 Перевод
        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;
        }

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


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

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

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