2012-04-18 4 views
0

Azure 마켓에서 제공되는 Microsoft 번역 서비스를 사용하려고합니다. 제공된 샘플 코드로 시작했습니다 http://code.msdn.microsoft.com/windowsazure/Walkthrough-Translator-in-7e0be0f7/view/SourceCodeMicrosoft 번역 쿼리를 실행하십시오.

샘플 코드를 사용하면 단일 번역본을 얻을 수 있습니다. 그러나 한 번의 요청으로 여러 번역본을 얻고 싶습니다. 나는 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).

최고 감사합니다,

명나라 쑤.

+0

cont.Translate ("Nothing to translate", "nl", "en")을 사용하여 단일 요청을 만들 때 실제로 작동합니다. 하지만 한 번의 요청으로 여러 번역본을 원합니다. 당신이 제안한 방법은 또한 단 하나의 번역만을 제공합니다. –

관련 문제