Bing翻译HTTP API抛出错误的请求错误,如何解决?

时间:2012-12-21 20:29:16

标签: bing-api

每当我调用Bing Translation API [HTTP]来翻译某些文本时,第一次它工作正常,第二次它会给我'错误请求'[状态代码400]错误。如果我等待10分钟左右,然后再试一次,那么第一个请求成功,但第二个请求同样的故事。我有Bing Translation API的免费帐户[200万字符翻译],是否有任何其他限制调用此API?

谢谢,Madhu

答案: 嗨,我错过订阅Microsoft Translator DATA set订阅。一旦我得到相同,那么事情已经解决了。即;一旦我注册了https://datamarket.azure.com/dataset/bing/microsofttranslator,那么事情就会奏效。

我正确地生成了access_token,所以这不是问题。 谢谢,madhu

2 个答案:

答案 0 :(得分:1)

我错过订阅Microsoft Translator DATA set订阅。一旦我得到相同,那么事情已经解决了。即;一旦我注册了https://datamarket.azure.com/dataset/bing/microsofttranslator,那么事情就会奏效。

我是 谢谢,madhu

答案 1 :(得分:1)

作为对其他任何有问题的人的说明,我发现该服务仅允许在使用免费订阅时使用一次使用令牌。您必须拥有付费订阅才能使用每个令牌多次调用Translate服务。当然,这种限制没有记载。

我不知道你是否可以继续获得新的代币 - 我怀疑不是。

无论订阅如何,令牌都会每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;
    }
}