【问题标题】:Bing translator HTTP API throws bad request error, how to solve this?必应翻译器 HTTP API 抛出错误请求错误,如何解决?
【发布时间】:2012-12-09 10:16:15
【问题描述】:

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

谢谢,马杜

答案: 嗨,我错过了订阅微软翻译数据集订阅。一旦我得到相同的结果,那么事情就解决了。 IE;一旦我注册了https://datamarket.azure.com/dataset/bing/microsofttranslator 然后一切正常。

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

【问题讨论】:

    标签: bing-api


    【解决方案1】:

    我错过了订阅微软翻译数据集订阅。一旦我得到相同的结果,那么事情就解决了。 IE;一旦我注册了https://datamarket.azure.com/dataset/bing/microsofttranslator 然后一切正常。

    我是 谢谢,马杜

    【讨论】:

      【解决方案2】:

      作为其他有问题的人的说明,我发现该服务仅允许在使用免费订阅时使用令牌一次。您必须付费订阅才能使用每个令牌多次调用翻译服务。当然,这种限制是无证的。

      我不知道你是否可以简单地继续获得新的令牌——我怀疑不能。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-03
        • 2020-04-24
        • 2016-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-21
        • 2015-11-18
        相关资源
        最近更新 更多