Untersucht, wie Dienste mit Watson SDK für Java aufgerufen werden

Dies ist die ursprüngliche Geschichte

https://github.com/watson-developer-cloud/java-sdk

Was ist los

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);

grundlegende Denkweise

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)

Bei einem Unit-Test

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 ...?) nlc.png

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");

ibm-credentials.env Ladeort und Bestellung

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

Beachten Sie auch die Version von Apache Commons IO

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

Untersucht, wie Dienste mit Watson SDK für Java aufgerufen werden
[Java] So testen Sie, ob es in JUnit null ist
Aufrufen von Funktionen in großen Mengen mit Java Reflection
So kompilieren Sie Java mit VsCode & Ant
[Java] Fassen Sie zusammen, wie Sie mit der Methode equals vergleichen können
Rufen Sie die visuelle Erkennung im Watson Java SDK auf
Gehen wir zu Watson Assistant (ehemals Conversation). ④ Verknüpfung mit Java-Logik
Verwendung des Java-Frameworks mit AWS Lambda! ??
Verwendung der Java-API mit Lambda-Ausdrücken
[Java] (für MacOS) Methode zur Einstellung des Klassenpfads
[Java] Wie man mehrere for-Schleifen einzeln macht
So rufen Sie AmazonSQSAsync auf
So erstellen Sie eine Docker-Umgebung mit Gradle for IntelliJ
[Java] So lassen Sie die Federkonstruktorinjektion mit Lombok weg
So stellen Sie Java mit Serverless Framework für AWS Lambda bereit
Umgang mit Keine Vorlage für interaktive Anfragen
[Für Anfänger] So bedienen Sie die Stream-API nach Java 8
Verwendung von Truth (Assertion Library für Java / Android)
Versuchen Sie, mit Java eine Verbindung zu AzureCosmosDB Emulator for Docker herzustellen
So erstellen Sie eine Java-Entwicklungsumgebung mit VS Code
So schleifen Sie Java Map (für jede / erweiterte for-Anweisung)
Ausführen des WebCamCapture-Beispiels von NyARToolkit für Java
[Java] So unterbrechen Sie eine Zeile mit StringBuilder
(Java) Implementieren von equals () für eine Klasse mit durch Vererbung hinzugefügten Wertelementen
So senken Sie die Java-Version
[Java] Verwendung von Map
So kehren Sie die Kompilierung der Apk-Datei in Java-Quellcode mit MAC um
Verwendung von SAS-Token für Azure Event Hubs (Java)
Java zum Spielen mit Function
Java - So erstellen Sie JTable
[Ein Muss für einen Java-Ingenieurlehrling] Verwendung der Stream-API
So erstellen Sie ein leichtes Container-Image für Java-Apps
So behandeln Sie Ausnahmen mit Java 8 Stream oder Optional kühl
Verwendung von Java Optional
So minimieren Sie Java-Images
Wie schreibe ich einen Java-Kommentar
Verwendung der Java-Klasse
[Java] So zeigen Sie Wingdings an
Wie man mit html.erb nummeriert (nummeriert)
Verwendung von Java Map
Aufrufen und Verwenden der API in Java (Spring Boot)
So aktualisieren Sie mit activerecord-import
So legen Sie Java-Konstanten fest
Stellen Sie mit Java eine Verbindung zur Datenbank her
Stellen Sie mit Java eine Verbindung zu MySQL 8 her
Verwendung von Java-Variablen
So konvertieren Sie Java Base
Versuchen Sie Spark Submit to EMR mit AWS SDK für Java
Für Java-Anfänger: Liste, Karte, Iterator / Array ... Wie konvertiere ich?
So initialisieren Sie ein Java-Array
[Java] So suchen Sie mit der Methode includes nach Werten in einem Array (oder einer Liste)
Wie gehe ich mit dem Typ um, den ich 2 Jahre lang über das Schreiben eines Java-Programms nachgedacht habe?
Verschlüsseln Sie Daten, die mit AWS SDK für Java / SSE-KMS in S3 hochgeladen wurden
Android: Umgang mit "Java-Version von '10 .0.1 'konnte nicht ermittelt werden"
[Für Anfänger] Mindestbeispiel zum Aktualisieren von RecyclerView mit DiffUtils in Java