am 13.02.2020 21:41
Ich hätte da einen Bekannten für so einen Job.
Wärst du bereit das zu vergüten? ![]()
am 26.02.2020 21:36
@Simon ich habe ein Node.js Modul geschrieben, du könntest das als Basis nutzen: https://www.npmjs.com/package/comdirect
am 28.02.2020 20:33
@anton_ wow, vielen Dank dafür und auch vielen Dank für das potentielle Angebot, dass dein Bekannter mir hier weiterhilft.
Fürs erste habe ich noch einen Freund finden können, der mir weiterhelfen möchte und das werde ich erstmal abwarten.
am 12.03.2020 16:40
@anton_ @SMT_Jan-Ove @Weinlese @apitragehq Hallo zusammen,
Dank der Unterstützung eines befreundeten Entwicklers und der comdirect API ist meine Seite countless.info endlich wieder online und voll funktionsfähig.
Vielen Dank für Eure Hilfe,
Simon
am 16.03.2020 12:10
Hallo zusammen,
das Problem mit dem Verbindungsaufbau habe ich auch, möchte allerdings die Verbindung zur API von einer Desktopsoftware aufbauen. Besteht grundsätzlich die Möglichkeit dazu oder muss die Verbindung immer über eine Server im Internet laufen? Konkret soll die Anwendung in Objective C für MacOS entwickelt werden. Dazu folgender Code:
-(void) startSession:(id) sender withDepot:(Depot *) depot // Authentication: Step 1/5
{
NSLog(@"starting REST session for depot '%@'",depot.name);
self.currentDepot=depot;
self.currentController=sender;
NSURL * url;
url=[NSURL URLWithString:RESTAPITOKENURL];
NSString * body;
body=[NSString stringWithFormat:@"{\"client_id\": \"%@\", \"client_secret\": \"%@\", \"grant_type\": \"password\", \"username\": \"%@\", \"password\": \"%@\"}",depot.client_id, depot.client_secret, depot.username, depot.username];
NSLog(@"%@",body);
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"application//json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application//x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:[body dataUsingEncoding:NSUTF8StringEncoding]];
request.timeoutInterval = 120;
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSURLSessionDataTask * task;
task=[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error)
{
if(error!=NULL) NSLog(@"%@",error);
NSDictionary * dict=[NSDictionary dictionaryWithObjectsAndKeys:data,@"data",response,@"response",nil];
[self startSessionCallback:dict];
}];
[task resume];
}
mit folgender rückmeldung vom REST Server (Fehlercode 500):
2020-03-16 12:09:45.484390+0100 Perfect Broker[15249:1468014] HTTP Status code: 500
2020-03-16 12:09:45.484581+0100 Perfect Broker[15249:1468014] <NSHTTPURLResponse: 0x60000024f320> { URL: https://api.comdirect.de/oauth/token } { Status Code: 500, Headers {
"Cache-Control" = (
"no-store, no-cache, must-revalidate,post-check=0, pre-check=0"
);
Connection = (
close
);
"Content-Language" = (
"de-DE"
);
"Content-Length" = (
0
);
"Content-Type" = (
"application/json;charset=utf-8"
);
Date = (
"Mon, 16 Mar 2020 11:09:45 GMT"
);
Expires = (
"Sat, 6 May 1995 12:00:00 GMT"
);
Pragma = (
"no-cache"
);
Server = (
Apache
);
"Set-Cookie" = (
"qSession=aa828f5f.5a0f6db50e419; path=/; domain=.comdirect.de"
);
"Strict-Transport-Security" = (
"max-age=31536000; includeSubDomains"
);
"X-Frame-Options" = (
SAMEORIGIN
);
"x-content-type-options" = (
nosniff
);
} }
am 16.03.2020 14:19
Hallo @WuuDuu und herzlich willkommen in unserer Community!
Meine Kollegen aus dem Fachbereich haben folgenden Tipp für dich:
Es ist kein Server im Internet notwendig. Es dürfen nur keine Anfragen direkt aus dem Browser gegen das API gemacht werden.
Um Dein beschriebenes Problem zu lösen, kannst du dir die Postman-Collection runterladen und dir für den OAuth-Aufruf in Postman den Code für Objective C erzeugen lassen.
Ich hoffe, das hilft dir weiter.
Gruß aus Quickborn
Erik
am 16.03.2020 14:37
Läuft. Postman generiert gleich den passenden Quellcode, sehr cool!
am 18.03.2020 16:10
mit PostmanCanary generierter Code kann perfekt für Objective C (MacOS) genutzt werden. Bei der Anpassung sind mir jedoch zwei kleine Fehler aufgefallen: in den Schritten 2.3 und 2.4 wird im Header Content-Type 2x gesetzt
"Content-Type": @"application/json" "Content-Type": @"text/plain"
wobei laut Doku nur application/json benötigt wird. Text/plain kann entfernt werden.
am 19.03.2020 12:49
Hallo @WuuDuu,
danke für dein Feedback! Den Hinweis habe ich gerne an meine Kollegen weitergegeben. 🙂
Beste Grüße
Jan-Ove
am 09.04.2020 19:06
ein ähnlicher Fehler ist im Postman-Code auch für das Ändern von Orders in der Header-Definition enthalten:
@"Content-Type": @"application/json", ... @"Content-Type": @"text/plain"
Content-Type wird 2x mit unterschiedlichen Werten gesetzt