2012-04-18 3 views
0

Мы пытаемся использовать службу перевода Microsoft, предоставляемую на рынке Azure. Я начал с примера кода, приведенного в http://code.msdn.microsoft.com/windowsazure/Walkthrough-Translator-in-7e0be0f7/view/SourceCodeВыполнять пакет запросов перевода microsoft

Используя свой пример кода, я могу получить один перевод. Однако я хотел бы получить несколько переводов в одном запросе. Я попытался использовать DataServiceContext.ExecuteBatch, но он выдает WebException с помощью «Удаленный сервер ответил на ошибку: (404) Не найден».

TranslatorContainer cont = new TranslatorContainer(new Uri("https://api.datamarket.azure.com/Bing/MicrosoftTranslator/")); 
var accountKey = "<account-key>"; 
cont.Credentials = new NetworkCredential(accountKey, accountKey); 

// This works 
var result1 = cont.Translate("Nothing to translate", "nl", "en").Execute().ToList(); 

DataServiceQuery<Translation>[] queries = new DataServiceQuery<Translation>[] 
{ 
    cont.Translate("Nothing", "nl", "en"), 
    cont.Translate("Nothing to translate", "nl", "en"), 
    cont.Translate("What happend", "nl", "en"), 
}; 

// This throws exception 
var result2 = cont.ExecuteBatch(queries); 

Я мог бы использовать несколько потоков и выполнять несколько запросов параллельно. Но мне нравится избегать этого. Кто-нибудь пробовал это раньше?

+0

Не уверен, что это ваш реальный ключ учетной записи в фрагменте кода. Я удалил его, на всякий случай, он был * реален. –

+0

Пожалуйста, не приписывайте свои заголовки «C#» и тому подобное. Для этого нужны теги. –

+0

Привет, У вас была возможность решить проблему? Мне также может потребоваться некоторое разрешение. – AvkashChauhan

ответ

0

Я не уверен, почему ваш код не работает. Но вы можете напрямую использовать REST API. Попробуйте использовать следующий код, который отлично работает на моей стороне:

 string stringToTranslate = "test"; 
     WebClient client = new WebClient(); 
     client.Credentials = new NetworkCredential("[your user name]", "[your key]"); 
     string results = client.DownloadString("https://api.datamarket.azure.com/Data.ashx/Bing/MicrosoftTranslator/Translate?Text=%27" + stringToTranslate + "%27&To=%27zh-CHS%27"); 

В результате получается подача AtomPub. Затем вы можете разобрать фид (например, использовать класс SyndicationFeed: http://msdn.microsoft.com/en-us/library/system.servicemodel.syndication.syndicationfeed.aspx).

С наилучшими пожеланиями,

Ming Xu.

+0

На самом деле он работает при выполнении одного запроса с использованием cont.Translate («Nothing to translate», «nl», «en»). Execute(). Но я хочу получить несколько переводов в одном запросе. Предлагаемый вами метод также дает только один перевод. –

Смежные вопросы