J'ai essayé l'API de texte Microsoft Translator en Java. p>
Je n'ai pas pu trouver la source d'exemple Java de manière inattendue, je vais donc la publier comme référence.
Vous pouvez l'utiliser immédiatement si vous modifiez la clé, tokenUrl et transUrl en fonction de votre environnement.
En passant, vous devez utiliser votre propre clé, qui est la suivante.
tokenUrl (API de jeton pour authentification-URL)
https://api.cognitive.microsoft.com/sts/v1.0/issueToken
transUrl (API pour translation-URL)
https://api.microsofttranslator.com/V2/http.svc/TranslateArray
@Component
public class TranslatorAPI {
@Value("${translation.subscriptionKey}")
private String key;
@Value("${translation.tokenApi.url}")
private String tokenUrl;
@Value("${translation.transApi.url}")
private String transUrl;
/**
*Traduisez la chaîne cible en anglais.
* @mots param Caractère cible
* @retourner le résultat de la traduction
*/
public String[] translator(String... words) {
return translatorPOSTToEN(words);
}
/**
*Obtenez un jeton.
*/
private String tokenPOST() {
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
HttpPost postMethod = new HttpPost(tokenUrl);
// Header
postMethod.setHeader("Content-Type", "application/json");
postMethod.setHeader("Accept", "application/jwt");
postMethod.setHeader("Ocp-Apim-Subscription-Key", key);
try (CloseableHttpResponse response = httpClient.execute(postMethod)) {
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity entity = response.getEntity();
return EntityUtils.toString(entity, StandardCharsets.UTF_8);
}
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
*Publiez sur l'API de traduction.
*/
private String[] translatorPOSTToEN(String... words) {
List<String> rtnWords = new ArrayList<String>();
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
HttpPost postMethod = new HttpPost(transUrl);
// header
//Obtenir un jeton d'authentification
String token = tokenPOST();
String authKey = "Bearer " + token;
postMethod.setHeader("Content-Type", "application/xml");
postMethod.setHeader("Authorization", authKey);
//Mot traduit
StringBuilder transWords = new StringBuilder();
for (String word : words) {
transWords.append("<string xmlns='http://schemas.microsoft.com/2003/10/Serialization/Arrays'>");
transWords.append(word);
transWords.append("</string>");
}
StringBuilder requestSB = new StringBuilder();
requestSB.append("<TranslateArrayRequest>");
requestSB.append("<AppId />");
requestSB.append("<Texts>");
requestSB.append(transWords.toString());
requestSB.append("</Texts>");
//Spécifiez la langue à traduire
requestSB.append("<To>en</To>");
requestSB.append("</TranslateArrayRequest>");
postMethod.setEntity(new StringEntity(requestSB.toString(),
StandardCharsets.UTF_8));
try (CloseableHttpResponse response = httpClient.execute(postMethod)) {
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity entity = response.getEntity();
String res = EntityUtils.toString(entity, StandardCharsets.UTF_8);
InputSource inputSource = new InputSource(new StringReader(res));
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = factory.newDocumentBuilder();
Document document = documentBuilder.parse(inputSource);
//Trier la phrase de la chaîne de caractères à traduire
Element root = document.getDocumentElement();
NodeList rootChildren = root.getChildNodes();
for (int i = 0; i < rootChildren.getLength(); i++) {
Node node = rootChildren.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
String val = element.getElementsByTagName("TranslatedText").item(0).getFirstChild().getNodeValue();
rtnWords.add(val);
}
}
}
}
} catch (ParserConfigurationException | SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return rtnWords.toArray(new String[rtnWords.size()]);
}
}
//échantillon
String[] words = tranApi.translator("c'est un stylo", "Les pommes sont délicieuses");
for (String word : words) {
System.out.println(word);
}
This is a pen.
Apple delicious
Recommended Posts