2017-07-17 5 views
0

ich Server mit folgenden Details einige Daten einschließlich Bild hinzufügen, um hinzuzufügen:möchte ich mehrt Daten an den Server über AFNetworking

Methode: POST Server URL: http://dev.aaaa.com/register

Headers: Schlüsselwerte APP_ID xxxxx App_key yyyyy enctype multipart/form-data

Körper:

Schlüsselwert Daten { "Code": "21187", "fname": "Manish", "lname": "Sharma"} Bild mypic.jpeg

Freunde helfen mir bitte Anfrage mit Körper und Header zu bilden unter AFNetworking.

Vielen Dank allen für dieses Problem unter Berücksichtigung und mir

Antwort

0
UIImage *image = //Your Image. 

NSDictionary *params [email protected]{@"data": @{@"code" : @"21187", 
            @"fname" : @"Manish", 
            @"lname" : @"lname" 
            } 
         }; 


static AFHTTPRequestOperationManager *afPostManager = nil; 

afPostManager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL: [NSURL URLWithString:@"http://dev.aaaa.com"]]; 
[afPostManager.responseSerializer setAcceptableContentTypes:[NSSet setWithObject:@"application/json"]]; 

[afPostManager.requestSerializer setValue:@"xxxx" forHTTPHeaderField:@"app-id"]; 
[afPostManager.requestSerializer setValue:@"xxxx" forHTTPHeaderField:@"app-key"]; 
[afPostManager.requestSerializer setValue:@"multipart/form-data" forHTTPHeaderField:@"enctype"]; 

afPostManager.responseSerializer = [AFJSONResponseSerializer 
            serializerWithReadingOptions:NSJSONReadingAllowFragments]; 


[afPostManager POST:@"register" parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { 

    NSData *imageData = UIImageJPEGRepresentation(image, 0.5); 

    [formData appendPartWithFileData:imageData name:title fileName:@"mypic.jpg" mimeType:@"image/jpeg"]; 

} success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) { 
    NSLog(@"success : %@",responseObject); 

} failure:^(AFHTTPRequestOperation * _Nullable operation, NSError * _Nonnull error) { 
    NSLog(@"failed : %@",error.localizedDescription); 

}]; 

Unterstützung starten

+0

Danke für Ihre Antwort ... aber es hat nicht funktioniert. Dieser Fehler ist aufgetreten. "2017-07-17 14: 05: 10.021 Implementierung [1172: 74340] fehlgeschlagen: Anfrage fehlgeschlagen: inakzeptabler Inhaltstyp: text/plain". Muss ich keine httpheaderfields wie app_id, enctype usw. hinzufügen – Jitendra

+0

ändern Sie Anwendung/JSON zu Text/plain und versuchen Sie, und Sie schreiben, dass Sie app_id und app_key im Header senden, warum ich hinzugefügt, dass, wenn Ihre API ist nicht erforderlich, dass Header dann entferne es – vp2698

+0

Ich versuchte dieses auch, aber es produziert denselben Fehler. Ich habe einige Änderungen auch gemacht, um seine Anforderung zu erfüllen, aber das gleiche Problem ... Snapshot von Postboten .... es wird Ihnen helfen, mehr zu verstehen Link 1) https://drive.google.com/file/d/0BweySDAy0UNja1FscGJVVjIwSVE/view?usp= Link teilen 2) https://drive.google.com/file/d/0BweySDAy0UNjNWZ6bnc3d0Rtc3M/view?usp=sharing – Jitendra

0
NSDictionary *dataDict = <data to send>; 
NSError *error = nil; 

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dataDict options:NSJSONWritingPrettyPrinted error:&error]; 
NSString *jsonString = [NSString stringWithFormat:@"%@", [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]]; 
NSLog(@“json = %@", jsonData); 

NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; 
NSURL *baseURL = [NSURL URLWithString:@“http://dev.aaaa.com/”]; 
NSLog(@“base URL = %@", baseURL); 

AFHTTPSessionManager *sessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL sessionConfiguration:config]; 
[sessionManager.requestSerializer setTimeoutInterval:500.0]; 
sessionManager.requestSerializer = [AFJSONRequestSerializer serializer]; 

AFJSONResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments]; 
sessionManager.responseSerializer = responseSerializer; 

sessionManager.responseSerializer.acceptableContentTypes = [sessionManager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"]; 

NSData *imageData = UIImageJPEGRepresentation(image, 0.5); 

[sessionManager POST:@“register” parameters:dataDict constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 

    //-------- here append images as form data ------------------------- 

    [formData appendPartWithFileData:imageData name:@“image” fileName:@“myimage.jpg" mimeType:@"image/jpeg"]; 

} progress:^(NSProgress * _Nonnull uploadProgress) { 

    progressBlock(uploadProgress); 

} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { 

    successBlock(task, responseObject); 

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 

    faliureBlock(task, error); 
}]; 

verwenden kann Ihnen helfen.

+0

Hallo Richard .... Es gibt keine solche Methode [SessionManager POST: @ "Register" -Parameter: dataDict constructingBodyWithBlock:^(id für ......... und auch in einer Schnappschussaufnahme kann man sehen, dass ich nicht nur Daten, sondern ein Bild daneben gebe .... – Jitendra

Verwandte Themen