2012-04-18 11 views
0

Azureの市場で提供されるMicrosoft翻訳サービスを使用しようとしています。私はhttp://code.msdn.microsoft.com/windowsazure/Walkthrough-Translator-in-7e0be0f7/view/SourceCodeMicrosoft翻訳クエリのバッチを実行

で提供されているサンプルコードから始めました。サンプルコードを使用して、1つの翻訳を得ることができます。しかし、私は1回のリクエストで複数の翻訳をしたいと思っています。私はDataServiceContext.ExecuteBatchを使ってみましたが、 "リモートサーバーからエラーが返されました:(404)Not Found"というWebExceptionがスローされます。

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")を使用して単一のリクエストを作成するときに機能します。しかし、私は1回のリクエストで複数の翻訳をしたいと思っています。あなたから提案された方法も、ただ一つの翻訳を提供します。 –

関連する問題