Api Connector Authentication

Hallo zusammen,

ich möchte mit Resteasy eine API connecten. Leider klappt da was nicht, es kommt immer 401 Unauthorized.

Im Browser klappts, also muss es am Code liegen. Kann mir jemand helfen bitte? Was genau macht denn ein Browser wenn man die API URL darin aufruft? Hashed der das noch oder so?

Meine Methode:

          public static void getProduct(String domain, String apiUser, String apiPassword, String productSKU) {
    		ResteasyClient client = new ResteasyClientBuilder().build();
    		String credentials = apiUser + ":" + apiPassword;
    		System.out.println(credentials);
    		String base64encoded = Base64.getEncoder().encodeToString(credentials.getBytes());
    		System.out.println(base64encoded);
    		ResteasyWebTarget webTarget = client.target(domain + "/api/articles/" + productSKU + "?useNumberAsId=true");
    		String response = webTarget.request().header(HttpHeaders.AUTHORIZATION, " Basic " + base64encoded)
    				.get(String.class);
    		System.out.println(response);
    	}

Hier die API Beschreibung https://developers.shopware.com/developers-guide/rest-api/#http-basic-authentication

Tip für die Selbsthilfe:

Wenn es im Browser funktioniert, kannst Du Dir auch den Request ansehen. Den Header musst Du dann genau so aufbauen, wie im Browser.

Ah ok danke. Das sieht so aus (Digest? Möchte aber Basic Authentication nutzen)

Wie kann ich sehen, was mein Programm an den Server sendet?21

günstig ist wiederum, von Browser unabhängig ein Tool zu haben, welches neutral jeden Netzverkehr anzeigt,
den vom Browser und dem vom Java-Programm in exakt selben Format mit allen weiteren relevanten Umständen,

Stichwort HttpSniffer für Suche evtl., wobei nur von Hörensagen von vor Jahren hängengeblieben, nicht selber im Thema

Hast du eine Version, welche das überhaupt unterstützt. Denn laut doku musst du mind. 5.3.2 im Einsatz haben:

HTTP Basic authentication (introduced with Shopware 5.3.2)

Hi, hatte 5.2.x :man_facepalming:
Ich update mal und teste, dachte digest ist sicher als basic, warum wurde das dann jetrzt erst eingeführt. Komisch
Aber danke für den Hint, hoffe das war des Rätsels Lösung

@Tomate_Salat

das wars! TAUSEND DANK das hab ich völlig überlesen, künftig lese ich mir API durch bevor ich loslege. Danke danke danke

@Tomate_Salat @SlaterB

Nun bekomme ich was ich will :slight_smile: Welches Framework ist für das Mapping zu empfehlen oder welches ist am meisten im Einsatz? Jackson?

Hatte gehofft, dass hier vielleicht jemand antwortet der sich schon mehr in dem Umfeld bewegt hat als ich - aber bevor du gar keine Antwort bekommst, will ichs doch versuchen:

Also mit Jackson dürftest du nix falsch machen. Afaik wird es auch von Spring (Boot) verwendet und sollte damit eine sehr weite Verbreitung haben.

Als alternative würde mir jetzt auch nur GSON einfallen (was ich gerne im SE-Bereich verwendet hab). Würde jetzt aber nicht extra wechseln, wenn du schon mit Jackson angefangen hast.

1 „Gefällt mir“

Hab noch gar nix genommen, werde mal Gson nutzen das scheint bessere Dokus zu haben

Um das Thema “ordentlich” zu halten hab ich die Non-sense-Beiträge (und die berechtigten Antworten darauf) entfernt.

1 „Gefällt mir“