使用Microsoft Translate Service中的GetLanguageNames时出现InternalServerError

时间:2017-04-06 06:41:45

标签: c# microsoft-cognitive language-translation

我正在开发Microsoft Cognitive Translation Services API的包装器,并使用RestSharp作为我的主要驱动程序。

到目前为止,我已经实现了/ Translate和/ GetLanguagesForTranslate(返回语言代码),但在尝试实施 / GetLanguageNames 时我遇到了障碍 这是令人讨厌的代码:

    public void EnrichCodesWithNames(IEnumerable<Language> languageCodes)
    {
        var request = new RestRequest(resource, Method.POST);
        request.AddParameter("appid", _tokenRefresher.BearerToken);         
        request.AddParameter("locale", "nb-NO");
        request.AddParameter("languageCodes", string.Join(",", languageCodes.Where(c => !c.Code.Contains("-")).Select(c => c.Code).ToArray()));            

        var result = _restClientTranslation.Execute(request);
        if(result.StatusCode == HttpStatusCode.OK)
        {
            var element = result.Content;
        }
    }

根据the documentation,我需要将 locale 指定为两个字母的小写字符串和ISO 3166双字母大写的亚文化代码。我假设&#39; nb-NO&#39;会是对的吗? (我也曾尝试过“不 - NB&#39;”。文档没有指定破折号,逗号或其他任何内容,所以它还不太清楚。

第二件事是语言代码本身。文档说明我应该提供一个字符串数组的语言代码,并且我在调用 / GetLanguagesForTranslate

时插入我获得的值

结果是200 OK,但是,我收到内部服务器错误,并显示以下消息:

服务器在处理请求时遇到错误。有关详细信息,请参阅服务器日志。

我对可能出错的东西感到茫然。帮助将不胜感激。

1 个答案:

答案 0 :(得分:-1)

这有帮助吗?以下是使用GetLanguageNames调用GetLanguagesForTranslatecurl的示例。

curl -H "Authorization: Bearer %Bearer%" https://api.microsofttranslator.com/v1/http.svc/GetLanguageNames

curl -H "Authorization: Bearer %Bearer%" https://api.microsofttranslator.com/v2/http.svc/GetLanguagesForTranslate

获取上面的Bearer标记并使用以下内容将其变为环境变量:

curl -k --data "" "https://api.cognitive.microsoft.com/sts/v1.0/issueToken" -H "Ocp-Apim-Subscription-Key:<your key>" > Bearer.txt
set /p Bearer= < Bearer.txt

在编码之前,始终使用curl原型API调用。它简化了学习曲线。