Legen Sie den Inhaltstyp der Anfrage mit dem AFHTTPRequestOperationManager von AFNetworking 2 fest.
-
21-12-2019 - |
Frage
Ich habe versucht, mit AFNetworking 2.0 über HTTP mit einer JSON-API zu kommunizieren.Die Beispiele, die ich gefunden habe, empfahlen die Verwendung von AFHTTPRequestOperationManager
, also habe ich den folgenden Pseudocode implementiert:
manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:@"http://test-api.localdev/"]];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
params = @{
@"username": @"Drarok",
@"token": @"1234-abcd"
};
[manager GET:@"transactions" parameters:params success:[…] failure:[…]];
Leider scheint es so zu sein AFJSONRequestSerializer
nicht (oder vielleicht dürfen nicht) den Inhaltstyp festlegen, und ich kann keine Möglichkeit finden, dies manuell zu tun.
Daher lehnt die API meine Anfrage mit der Fehlermeldung „HTTP 415 nicht unterstützter Medientyp“ ab.
Andere, ähnliche Fragen werden vom Server verursacht Antwort nicht application/json, aber bei dieser Frage geht es um die Anforderungsheader.
Lösung
Dies wurde dadurch verursacht, dass ein falscher API-Server dies behauptete alle Anfragen hatten eine Content-Type: application/json
Header.AFNetworking vermeidet korrekterweise das Setzen dieses Headers für HEAD
, GET
, oder DELETE
Anfragen.