Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2012, 23:48   #1
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
По умолчанию Запрос к Yandex переводчику из программы на c#

Можно ли Yandex API использовать из локального приложения на c#? Если да, то каким макаром отправлять запрос, что-то у меня данный код не прокатывает, кидает исключение "Удаленный сервер возвратил ошибку":
Код:
class Translator
	{
		string strOriginal;
		string strResult;
		bool bEnRus;
		HttpWebResponse wresScrape;

		private string ConvertStreamTostring(Stream stmSource)
		{
			StreamReader sr = null;
			if (stmSource != null)
			{
				try
				{
					sr = new StreamReader(stmSource);
					return sr.ReadToEnd();
				}
				catch
				{
					throw new Exception();
				}
				finally
				{
					wresScrape.Close();
					sr.Close();
				}
			}
			else
			{
				return null;
			}
		}
		private Stream GetHttpStream(string url)
		{
			HttpWebRequest wreqScrape = (HttpWebRequest)(WebRequest.Create(url));
			wreqScrape.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.1)";
			wreqScrape.Method = "POST";
			wreqScrape.Timeout = 10000;

			try
			{
				wresScrape = (HttpWebResponse)(wreqScrape.GetResponse());
				return wresScrape.GetResponseStream();
			}
			catch(Exception e)
			{
				MessageBox.Show(e.Message + url);
				return null;
			}
		}
		public string Original
		{
			set { strOriginal = value; }
			get { return strOriginal; }
		}
		public string Result
		{
			get { return strResult; }
		}
		private void GetTranslateDirection()
		{
			Byte bRus = 0;
			Byte bEn = 0;
			Byte bSuccess = (strOriginal.Length < 5) ? (Byte)strOriginal.Length : (Byte)5;
			foreach (char c in strOriginal.ToUpper())
			{
				if (c >= 'А' && c <= 'Я') bRus++;
				else if (c >= 'A' && c <= 'Z') bEn++;
				if (bRus == bSuccess) { bEnRus = false; break; }
				else if (bEn == bSuccess) { bEnRus = true; break; }
			}
		}
		public void Translate()
		{
			GetTranslateDirection();
			StringBuilder sb = new StringBuilder(@"http://translate.yandex.net/api/v1/tr/translate?lang=");
			sb.Append((bEnRus) ? "en-ru" : "ru-en");
			sb.Append("&text=");
			sb.Append(strOriginal);
			strResult = ConvertStreamTostring(GetHttpStream(sb.ToString()));
			MessageBox.Show(strResult);
		}
	}
З.Ы.: Если у меня уж очень очевидные ошибки в коде, не кидайтесь сильно Я в запросах нуб...
rmv240899 вне форума Ответить с цитированием
Старый 20.12.2012, 05:27   #2
alex4321
Пользователь
 
Регистрация: 23.07.2012
Сообщений: 77
По умолчанию

А под браузер косить пробовал (характерными заголовками)?
alex4321 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
XML Yandex на C# Лубышев Общие вопросы .NET 1 26.07.2012 14:13
Парсинг yandex Gudzik11 Общие вопросы Delphi 11 29.04.2012 22:20
авторизация на yandex.ru?? maloy_ya Работа с сетью в Delphi 1 28.07.2010 11:44
Yandex login littlecoder Работа с сетью в Delphi 1 10.07.2009 11:28
Excel and Yandex Mad_Dog Microsoft Office Excel 1 11.12.2007 09:05