Ich versuche geschachteltes veränderbares Wörterbuch als Parameter in POST-Anforderung in AFNetworking 3.0 zu senden.Senden von geschachtelten NSMutableDictionary als Parameter für POST-Anforderung in AFNetworking 3.0
Hier ist meine Sessionmanager Einstellungen:
self.requestSerializer = [AFJSONRequestSerializer serializer];
self.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
Das Wörterbuch, wie unten hergestellt:
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
f.numberStyle = NSNumberFormatterNoStyle;
NSNumber *myNumber = [f numberFromString:self.userMobNoTf.text];
NSString *UDID = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
NSMutableDictionary *miniDict = [NSMutableDictionary dictionary];
[miniDict setObject:[NSNumber numberWithInteger:0] forKey:@"ID"];
[miniDict setObject:self.userIDTf.text forKey:@"UserId"];
[miniDict setObject:self.userNameTf.text forKey:@"Name"];
[miniDict setObject:self.userPasswordTf.text forKey:@"Password"];
[miniDict setObject:UDID forKey:@"IMEI"];
[miniDict setObject:@"1.0" forKey:@"AppVersion"];
[miniDict setObject:self.userNameTf.text forKey:@"CreatedBy"];
[miniDict setObject:myNumber forKey:@"MobileNo"];
[miniDict setObject:[NSNumber numberWithInt:1] forKey:@"isActive"];
NSMutableDictionary *paramDict = [NSMutableDictionary dictionary];
[paramDict setObject:self.userNameTf.text forKey:@"UserName"];
[paramDict setObject:self.userPasswordTf.text forKey:@"Password"];
[paramDict setObject:self.userIDTf.text forKey:@"UserId"];
[paramDict setObject:myNumber forKey:@"MobileNo"];
[paramDict setObject:UDID forKey:@"Imei"];
[paramDict setObject:[miniDict mutableCopy] forKey:@"Food_UserLogin"];
Hier ist die Anforderung POST:
[appD.sessionManager POST:@"FoodSignUpSave" parameters:paramDict progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
dispatch_async(dispatch_get_main_queue(), ^{
[radialHUD dismiss];
});
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
dispatch_async(dispatch_get_main_queue(), ^{
[radialHUD dismiss];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error!" message:error.description delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[alert show];
});
}];
Allerdings bin ich unten bekommen Fehler:
Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Invalid value around character 0.) UserInfo=0x174660fc0 {NSDebugDescription=Invalid value around character 0., NSUnderlyingError=0x174241bc0 "Request failed: bad request (400)"}
Wenn ich miniDict nicht im Schlüssel "Food_UserLogin" sende, bekomme ich eine Erfolgsantwort, aber das Setzen dieses Parameters als Wörterbuch verursacht Probleme. Irgendwelche Vorschläge, was falsch ist?
P.S. Ich werde keine Änderungen auf der Serverseite vornehmen wollen.
Aus Interesse, warum muss es veränderbar sein? – trojanfoe
Ich lese irgendwo, dass, um es in der richtigen JSON-Zeichenfolge zu konvertieren, muss man ein veränderbares Wörterbuch senden –
Und wie ist JSON auf Ihre Frage bezogen? – trojanfoe