https://github.com/watson-developer-cloud/java-sdk
Auf den ersten Blick wurde ich zu diesem Codeteil geführt, in dem "Ja, ja, ich übergebe API_Key" steht ...
Sample.java
// letting the SDK manage the IAM token
Authenticator authenticator = new IamAuthenticator("<iam_api_key>");
Discovery service = new Discovery("2019-04-30", authenticator);
Wenn Sie in IBM Cloud bereitstellen, können Sie VCAP-Variablen verwenden, sodass Sie eine Instanz des Dienstes erstellen können, ohne Authenticator anzugeben. (Wer über schwierige Dinge nachdenkt, verliert)
Es ist einfach, die Anmeldeinformationsdatei abzurufen und zu laden (es gibt keine VCAP-Variable, aber es fühlt sich so an)
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.
Ich war auch beeindruckt von der Tatsache, dass es Zeiten gab, in denen der Bereich Anmeldeinformationen auf dieser Seite nicht angezeigt wurde ("Administration" in "Dienste"). (Ich frage mich, ob es nicht gelesen hat ...?)
Mit diesem Download können Sie "ibm-credentials.env" löschen.
Das Format lautet "<Großbuchstabe des Servicenamens> _
Dieser NLC-Dienst wurde in der Region Tokio erstellt, die ich gefunden habe. Achten Sie daher darauf, dass die URL für die Region Tokio gilt. Als ich vor dem Laden der Datei versuchte und einen Fehler machte, konnte ich den API-Schlüssel übergeben, aber die URL nicht angeben. In diesem Fall "https: // gateway.watsonplatform.net / natural-language-classifier / api" Wird angegeben und 403 Forbidden wird zurückgegeben, wenn versucht wird, auf "US-South" zuzugreifen.
Geben Sie die API als Argument an. Wenn Sie den Dienst in einer anderen Region als && US-South erstellt haben, legen Sie die URL fest.
Sample.java
NaturalLanguageClassifier nlc = new NaturalLanguageClassifier("<api_key");
//Geben Sie die URL der Serviceregion an
nlc.setURL("https://gateway-tok.watsonplatform.net/natural-language-classifier/api");
Ich habe es in der Readme-Datei geschrieben, aber es war leichter zu verstehen, wenn ich mir die Quelle ansah.
Dateiname auf "ibm-credentials.env" festgelegt Die Lesereihenfolge ist wie folgt und die von oben gefundene wird gelesen (danach nicht mehr lesen)
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
Ich habe Commons für einen anderen Zweck verwendet, und die enthaltene Version war etwas alt, aber vorerst scheint sie nutzlos zu sein, es sei denn, sie ist 2.3 oder höher (Commons IO gibt 2.6 im POM von SDK Core an). Diese Methode existiert nicht und es tritt ein Fehler (NoSuchMethodError) auf. 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