https://github.com/watson-developer-cloud/java-sdk
Au premier coup d'œil, j'ai été guidé vers cette partie de code qui dit "Oui, oui, je passe API_Key" ...
Sample.java
// letting the SDK manage the IAM token
Authenticator authenticator = new IamAuthenticator("<iam_api_key>");
Discovery service = new Discovery("2019-04-30", authenticator);
Si vous déployez sur IBM Cloud, vous pouvez utiliser des variables VCAP, vous pouvez donc créer une instance du service sans spécifier Authenticator. (Ceux qui pensent aux choses difficiles perdent)
Il est facile de récupérer le fichier d'identification et de le charger (il n'y a pas de variable VCAP, mais on a l'impression que c'est le cas)
Credential file (easier!)
With a credential file, you just need to put the file in the right place and the SDK will do the work of parsing it and authenticating. You can get this file by clicking the Download button for the credentials in the Manage tab of your service instance.
J'ai également été frappé par le fait que le volet Identifiants n'était parfois pas affiché sur cette page ("Administration" dans "Services"). (Je me demande s'il n'a pas réussi à lire ...?)
Avec ce téléchargement, vous pouvez supprimer ʻibm-credentials.env. Le format est
<lettre supérieure du nom du service> _ <Clé> =
Ce service NLC a été créé dans la région de Tokyo que j'ai trouvée, alors faites attention à ce que l'URL soit pour la région de Tokyo.
Lorsque j'ai essayé et fait une erreur avant de charger le fichier, j'ai pu passer la clé API mais je n'ai pas pu spécifier l'URL, auquel cas https: // gateway.watsonplatform.net / natural-language-classifier / api
Est spécifié, et 403 Forbidden est renvoyé lors de la tentative d'accès à ʻUS-South`.
Spécifiez l'API comme argument Si vous avez créé le service dans une région autre que && US-South, définissez l'URL.
Sample.java
NaturalLanguageClassifier nlc = new NaturalLanguageClassifier("<api_key");
//Spécifiez l'URL de la région de service
nlc.setURL("https://gateway-tok.watsonplatform.net/natural-language-classifier/api");
Je l'ai écrit dans le Readme, mais c'était plus facile à comprendre si je regardais la source.
Nom de fichier fixé sur ʻibm-credentials.env` L'ordre de lecture est le suivant, et celui trouvé du haut est lu (ne pas lire après cela)
CredentialUtils.java
private static List<File> getFilesToCheck() {
List<File> files = new ArrayList<>();
String userSpecifiedPath = EnvironmentUtils.getenv("IBM_CREDENTIALS_FILE");
String currentWorkingDirectory = System.getProperty("user.dir");
String unixHomeDirectory = EnvironmentUtils.getenv("HOME");
String windowsFirstHomeDirectory = EnvironmentUtils.getenv("HOMEDRIVE") + EnvironmentUtils.getenv("HOMEPATH");
String windowsSecondHomeDirectory = EnvironmentUtils.getenv("USERPROFILE");
https://github.com/IBM/java-sdk-core/blob/master/src/main/java/com/ibm/cloud/sdk/core/util/CredentialUtils.java
J'ai utilisé Commons dans un autre but, et la version incluse était un peu ancienne, mais pour le moment, elle semble inutile à moins qu'elle ne soit 2.3 ou supérieure (Commons IO spécifie 2.6 dans le pom du SDK Core) Cette méthode n'existe pas et une erreur (NoSuchMethodError) se produit. https://commons.apache.org/proper/commons-io/javadocs/api-2.6/org/apache/commons/io/IOUtils.html#readLines-java.io.InputStream-java.nio.charset.Charset
Recommended Posts