Hilfe
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 

REST API lehnt Verbindung zum Server ab

29 ANTWORTEN

anton_
Autor ★
13 Beiträge

Ich hätte da einen Bekannten für so einen Job.
Wärst du bereit das zu vergüten? Smiley (fröhlich)

anton_
Autor ★
13 Beiträge

@Simon  ich habe ein Node.js Modul geschrieben, du könntest das als Basis nutzen: https://www.npmjs.com/package/comdirect

Simon
Autor ★★
11 Beiträge

@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.

Simon
Autor ★★
11 Beiträge

@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

WuuDuu
Autor ★★
28 Beiträge

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

 

 

 

SMT_Erik
ehemaliger Mitarbeiter
5.305 Beiträge

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

WuuDuu
Autor ★★
28 Beiträge

Läuft. Postman generiert gleich den passenden Quellcode, sehr cool!

WuuDuu
Autor ★★
28 Beiträge

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.

SMT_Jan-Ove
ehemaliger Mitarbeiter
4.279 Beiträge

Hallo @WuuDuu,

 

danke für dein Feedback! Den Hinweis habe ich gerne an meine Kollegen weitergegeben. 🙂

 

Beste Grüße

Jan-Ove

WuuDuu
Autor ★★
28 Beiträge

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