我正在开发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,但是,我收到内部服务器错误,并显示以下消息:
服务器在处理请求时遇到错误。有关详细信息,请参阅服务器日志。
我对可能出错的东西感到茫然。帮助将不胜感激。
答案 0 :(得分:-1)
这有帮助吗?以下是使用GetLanguageNames
调用GetLanguagesForTranslate
和curl
的示例。
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调用。它简化了学习曲线。