2012-12-21 52 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; 
    } 
} 
相关问题