![]() |
RESTClient Basic Auth. funkt nicht
Hallo Zusammen,
das mitgelieferte Beispiel Embarcadero REST-Library Demos funktioniert einwandfrei um eine Verbindung auf Delphi-PRAXIS durchzuführen. Genau dieses Beispiel verwende ich als Basis zu einem Service auf Mobile.de zuzugreifen. In der Doku ist ein Beispiel über das tool curl. Da sieht die connection so aus:
Code:
Das versuche ich jetzt über Delphi und zwar so:
curl -k -x api.test.sandbox.mobile.de:8080 -basic -u meinUsername:meinPasswort -X GET "https://services.mobile.de/seller-api/sellers/" -H "Accept: application/vnd.de.mobile.api+json" | jq
Delphi-Quellcode:
Bei Ausführen bekomme ich die Meldung "REST-Anforderung fehlgeschlagen: Fehler beim Abruf des Serverzertfikats."
HTTPBasicAuthentificator.Username := xxx;
HTTPBasicAuthentificator.Password := yyy; RESTRequest.Accept := 'application/vnd.de.mobile.api+json'; <<< ist das so richtig? Mobile.de meint der String muss im Header stehen. RESTRequest.Resource := 'https://services.mobile.de/seller-api/sellers/'; RESTClient.BaseURL := 'https://api.test.sandbox.mobile.de:8080'; RESTRequest.Execute; Egal welchen Username oder Passwort übergebe, kommt die gleiche Fehlermeldung. Da die Base URL https ist, könnte das die Ursache sein? Brauche ich dafür die SSL Libs? Das Delphi Beispiel connectet sich als Base-URL per HTTP. Die Verbindung lauf Mobile.de soll über Basic-Authentification erfolgen. Hat hat jemand eine Idee? Gruß Kostas |
AW: RESTClient Basic Auth. funkt nicht
Die Fehlermeldung hat auf jeden Fall was mit dem https zu tun.
Zur abfrage der Usernamen und der Passwortes kommt es erst gar nicht. Vielleicht ist es ja auch möglich, zum testen ohne https zu arbeiten sondern nur mit http. Änder doch zum Test einfach mal die Url auf http. |
AW: RESTClient Basic Auth. funkt nicht
Danke für die Info,
wenn die BaseURL und Resource-URI jeweils http ist, kommt die Meldung "The requested URL could not be retrieved" Es wird ein html content gesendet. Bei Interesse kann ich den html content anhängen. Ist es generell nicht möglich über die Delphi RESTClient Komponente HTTPS Verbindungen als Basic-Auth. herzustellen? Das HTTPS generell nicht funktioniert wird nicht der Falls sein da das mitgelieferte Beispiel stellt auch eine Verbindung zu Twitter und co über https her. Die https Beispiele verwenden allerdings Auth1 und Auth2 mit Zertifikate und so ein Kram. Gruß Kostas |
AW: RESTClient Basic Auth. funkt nicht
Weist Du den Authenticator zu?
|
AW: RESTClient Basic Auth. funkt nicht
Zitat:
Gruß Kostas |
AW: RESTClient Basic Auth. funkt nicht
Hallo Zusammen,
kann es generell an der Delphi Komponente RESTClient und co liegen? Hat jemand Erfahrung mit alternativen Komponenten die das könnten. Beim suchen bin ich auf das Project Mars Curiosity gestossen. Könnte das etwas sein? ![]() Gruß Kostas |
AW: RESTClient Basic Auth. funkt nicht
Hallo,
nein, REST geht eigentlich immer. Das Problem ist immer, herauszufinden, welche Verbindungsoptionen der Server erwartet. |
AW: RESTClient Basic Auth. funkt nicht
Hallo Heiko,
ok, die Info ist schon mal sehr erfreulich. Das Problem ist die BaseUSL ist eine https und eine Basic-Authentification. Es gibt aber nur einen HTTPBasicAuthentificator. Meinst du dass es dennoch funktionieren müsste? Die Zugangsdaten habe ich mit dem Empfohlenen Tool "curl" testen können, die passen. Hast du noch eine Idee? Gruß Kostas |
AW: RESTClient Basic Auth. funkt nicht
Hallo
hier wurde noch ein anderer Ansatz für Basic Authentication benutzt: ![]() Aber ich sehe, das war nicht https. |
AW: RESTClient Basic Auth. funkt nicht
Ich sehe gerade, dass die Resource-property fehlerhaft gesetzt zu sein scheint. Der Request wird aus BaseURL und Resource zusammengesetzt.
Hier mal ein kleines Beispiel für einen JIRA-Rest-Request:
Delphi-Quellcode:
function GetAuthenticator : THTTPBasicAuthenticator;
begin Result := THTTPBasicAuthenticator.Create(TConfig.Username, TConfig.Password); end; function GetIssuesForUser(const AUserName : string) : TIssueList; var LIssue : TIssue; RESTClient : TRESTClient; RESTRequest : TRESTRequest; JSONValue : TJsonValue; JSONObject : TJSONObject; JSONArr : TJSONArray; i : Integer; begin Result := TIssueList.Create; RESTClient := TRESTClient.Create(TConfig.BaseURL); RESTClient.Authenticator := GetAuthenticator; {$IFDEF FIDDLER} // Zum Test mit Fiddler RESTClient.ProxyPort := 8888; RESTClient.ProxyServer := '127.0.0.1'; {$ENDIF} RESTRequest := TRESTRequest.Create(RESTClient); RESTRequest.Method := TRESTRequestMethod.rmGET; RESTRequest.Resource := 'search?jql=assignee={username}+'+ 'AND+status+in+("'+TConfig.Filter+'")'+ '&fields=key,summary,status'; try RESTRequest.Params.AddItem('username', AUserName, TRESTRequestParameterKind.pkURLSEGMENT); RESTRequest.Execute; if RESTRequest.Response.StatusCode = 200 then begin // JSON zerpflücken JSONValue := RESTRequest.Response.JSONValue; if JSONValue is TJSONObject then begin JSONArr := TJSONArray(TJSONObject(JSONValue).GetValue('issues')); for i := 0 to JSONArr.Size -1 do begin LIssue := TIssue.Create; Result.Add(LIssue); JSONObject := TJSONObject(JSONArr.Get(i)); GetIssueData(JSONObject, LIssue); end; end; end; except On E: Exception do begin LIssue := TIssue.Create; LIssue.Key := E.Message; Result.Add(LIssue); end; end; RESTRequest.Free; RESTClient.Authenticator.Free; RESTClient.Free; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz