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