2012-12-21 55 views
3

每當我打電話給Bing翻譯API [HTTP]翻譯一些文本,第一次工作正常,第二次以後,它給了我'錯誤的請求'[狀態代碼400]錯誤。如果我等待10分鐘左右然後再試一次,那麼第一次請求是成功的,但第二次請求是相同的故事。我有一個Bing翻譯API的免費賬戶[2百萬字符翻譯],是否有任何其他限制調用此API?Bing翻譯器HTTP API拋出錯誤的請求錯誤,該如何解決?

感謝,馬杜

答: 您好,我錯過了訂閱微軟翻譯數據設定的訂閱。一旦我得到相同的東西,事情就解決了。即;一旦我已經註冊了https://datamarket.azure.com/dataset/bing/microsofttranslator,那麼事情就起作用了。

我正確地生成了access_token,所以這不是問題。 謝謝,馬杜

回答

1

作爲一個紙條給別人有問題,我想通了,該服務僅允許使用免費訂閱令牌時要使用一次。您必須有付費訂閱才能使用每個令牌多次調用翻譯服務。當然,這種限制是無證的。

我不知道你是否可以簡單地繼續獲得新的令牌 - 我不懷疑。

無論訂閱什麼,令牌都會每10分鐘過期一次,因此請確保您在收到令牌時進行跟蹤,並在需要時獲取新令牌。 (不是線程安全的):

private string _headerValue; 
private DateTime _headerValueCreated = DateTime.MinValue; 
public string headerValue { 
    get { 
     if(_headerValueCreated < DateTime.Now.AddMinutes(-9)) { 
      var admAuth = new AdmAuthentication("myclientid", "mysecret"); 
      _headerValue = "Bearer " + admAuth.GetAccessToken(); 
      _headerValueCreated = DateTime.Now; 
     } 
     return _headerValue; 
    } 
} 
相關問題