如何使用带有 GetLanguageNames 的文本翻译 API 获取语言名称
How to get language names using Text Translation API with GetLanguageNames
我无法使用文本翻译获得语言名称 API。我用这个方法得到了可用的语言:
public async Task<List<string>> GetLanguagesForTranslateAsync()
{
string requestUri = "https://api.microsofttranslator.com/v2/http.svc/GetLanguagesForTranslate";
string accessToken = await this.auth.GetTokenAsync();
string response = await this.GetAsync(requestUri, accessToken);
XDocument xml = XDocument.Parse(response);
List<string> languages = new List<string>();
foreach (XElement element in xml.Root.Descendants())
{
languages.Add(element.Value);
}
return languages;
}
private async Task<string> GetAsync(string url, string bearerToken)
{
using (HttpClient httpClient = new HttpClient())
{
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);
HttpResponseMessage response = await httpClient.GetAsync(url);
return await response.Content.ReadAsStringAsync();
}
}
在这种情况下,我得到一个 XML,其语言代码如 "en"、"es"、"fr" 或 "zh-CHT",但我想得到 "english"、"spanish"、"french" 或 "chinese (traditional)"。寻找 the documentation 我试过这个方法:
public async Task<List<string>> GetLanguageNamesAsync(string locale, List<string> languageCodes)
{
string requestUri = "https://api.microsofttranslator.com/v2/http.svc/GetLanguageNames";
string content = $"locale=en&languageCodes=en,es,fr,zh-CHT";
string accessToken = await this.auth.GetTokenAsync();
string response = await this.PostAsync(requestUri, accessToken, content);
XDocument xml = XDocument.Parse(response);
List<string> languages = new List<string>();
foreach (XElement element in xml.Root.Descendants())
{
languages.Add(element.Value);
}
return languages;
}
private async Task<string> PostAsync(string url, string bearerToken, string content)
{
using (HttpClient httpClient = new HttpClient())
{
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);
HttpResponseMessage response = await httpClient.PostAsync(url, new StringContent(content));
return await response.Content.ReadAsStringAsync();
}
}
我收到此请求的响应:
请求错误
错误状态代码: 'InternalServerError'
详细信息:服务器在处理请求时遇到错误。请查看服务器日志以获取更多详细信息。
真正的XML响应:
<html version="-//W3C//DTD XHTML 2.0//EN"
xml:lang="en"
xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<HEAD>
<TITLE>Request Error</TITLE>
</HEAD>
<BODY>
<DIV id="content">
<P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P>
<P><B>Details: </B>The server encountered an error processing the request. Please see the server logs for more details.</P>
<!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-->
</DIV>
</BODY>
</html>
你知道发生了什么事吗?我还需要什么才能提出请求吗?
确保您可以卷曲 GetLanguages。以下对我有用。
curl -k --data "" "https://api.cognitive.microsoft.com/sts/v1.0/issueToken" -H "Ocp-Apim-Subscription-Key:<your Translation Text Key>" > Bearer.txt
set /p Bearer= < Bearer.txt
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"
curl -H "Authorization: Bearer %Bearer%" "https://api.microsofttranslator.com/v2/Http.svc/Translate?Text=Hello%%20world.&From=en&To=es"
我无法使用文本翻译获得语言名称 API。我用这个方法得到了可用的语言:
public async Task<List<string>> GetLanguagesForTranslateAsync()
{
string requestUri = "https://api.microsofttranslator.com/v2/http.svc/GetLanguagesForTranslate";
string accessToken = await this.auth.GetTokenAsync();
string response = await this.GetAsync(requestUri, accessToken);
XDocument xml = XDocument.Parse(response);
List<string> languages = new List<string>();
foreach (XElement element in xml.Root.Descendants())
{
languages.Add(element.Value);
}
return languages;
}
private async Task<string> GetAsync(string url, string bearerToken)
{
using (HttpClient httpClient = new HttpClient())
{
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);
HttpResponseMessage response = await httpClient.GetAsync(url);
return await response.Content.ReadAsStringAsync();
}
}
在这种情况下,我得到一个 XML,其语言代码如 "en"、"es"、"fr" 或 "zh-CHT",但我想得到 "english"、"spanish"、"french" 或 "chinese (traditional)"。寻找 the documentation 我试过这个方法:
public async Task<List<string>> GetLanguageNamesAsync(string locale, List<string> languageCodes)
{
string requestUri = "https://api.microsofttranslator.com/v2/http.svc/GetLanguageNames";
string content = $"locale=en&languageCodes=en,es,fr,zh-CHT";
string accessToken = await this.auth.GetTokenAsync();
string response = await this.PostAsync(requestUri, accessToken, content);
XDocument xml = XDocument.Parse(response);
List<string> languages = new List<string>();
foreach (XElement element in xml.Root.Descendants())
{
languages.Add(element.Value);
}
return languages;
}
private async Task<string> PostAsync(string url, string bearerToken, string content)
{
using (HttpClient httpClient = new HttpClient())
{
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);
HttpResponseMessage response = await httpClient.PostAsync(url, new StringContent(content));
return await response.Content.ReadAsStringAsync();
}
}
我收到此请求的响应:
请求错误
错误状态代码: 'InternalServerError'
详细信息:服务器在处理请求时遇到错误。请查看服务器日志以获取更多详细信息。
真正的XML响应:
<html version="-//W3C//DTD XHTML 2.0//EN"
xml:lang="en"
xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<HEAD>
<TITLE>Request Error</TITLE>
</HEAD>
<BODY>
<DIV id="content">
<P class="heading1"><B>Error Status Code:</B> 'InternalServerError'</P>
<P><B>Details: </B>The server encountered an error processing the request. Please see the server logs for more details.</P>
<!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-->
</DIV>
</BODY>
</html>
你知道发生了什么事吗?我还需要什么才能提出请求吗?
确保您可以卷曲 GetLanguages。以下对我有用。
curl -k --data "" "https://api.cognitive.microsoft.com/sts/v1.0/issueToken" -H "Ocp-Apim-Subscription-Key:<your Translation Text Key>" > Bearer.txt
set /p Bearer= < Bearer.txt
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"
curl -H "Authorization: Bearer %Bearer%" "https://api.microsofttranslator.com/v2/Http.svc/Translate?Text=Hello%%20world.&From=en&To=es"