Ich tue dies, um Server in einem Array Bilder zu senden bekommen:AFNetworking 3 AFMultipartFormData Bytes Daten als Antwort
NSString *string = [NSString stringWithFormat:@"%@/API/Upload",BaseURLString];
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc]initWithBaseURL:[NSURL URLWithString:BaseURLString]];
[manager setRequestSerializer:[AFHTTPRequestSerializer serializer]];
[manager setResponseSerializer:[AFHTTPResponseSerializer serializer]];
for(NSData *eachImage in self.fetchedAtt) {
[manager POST:string
parameters:nil
constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
[formData appendPartWithFormData:eachImage
name:@"image1"];
}
progress:nil
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (responseObject != nil)
{
//NSDictionary *jsonDictionary = responseObject;
NSLog(@"%@",responseObject);
}
}
failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"%@",error.localizedDescription);
}];
}
Vorerst nur ein Bild senden wir zu testen. Und es wird responseObject
, die Bytes Daten ist.
<696d6167 65313a20 efbfbdef bfbdefbf bdefbfbd 00104a46 49460001 01000048 00480000 efbfbdef bfbd0058 45786966 00004d4d 002a0000 00080002 01120003 00000001 00010000 efbfbd69 00040000 00010000 00260000 00000003 efbfbd01 00030000 00010001 0000efbf bd020004 00000001 0000001e efbfbd03...
Wie der Web-Guy Antwort sollte die URL des Bildes sein. Web-Backend ist in ASP.NET
Was mache ich falsch?
UPDATE
Wenn ich die Antwort Serializer ändern erhalte ich:
Request failed: unacceptable content-type: application/octet-stream
Ich habe dies auch versucht:
NSString *string = [NSString stringWithFormat:@"%@/API/Upload",BaseURLString];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager setRequestSerializer:[AFHTTPRequestSerializer serializer]];
[manager setResponseSerializer:[AFHTTPResponseSerializer serializer]];
NSError *error;
for(NSData *eachImage in self.fetchedAtt) {
NSURLRequest *request = [manager.requestSerializer multipartFormRequestWithMethod:@"POST" URLString:string parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
//NSString *value = @"qux";
//NSData *data = [value dataUsingEncoding:NSUTF8StringEncoding];
// [Formdata appendPartWithFormData: eachImage Name: @ "image1 "]; [formData appendPartWithFileData: jederBildname: @ "image1" Dateiname: @ "test.jpg" mimeType: @ "image/jpeg"]; } Fehler: & Fehler];
NSURLSessionDataTask *task = [manager dataTaskWithRequest:request uploadProgress:nil downloadProgress:nil completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
if (error) {
NSLog(@"%@", error.localizedDescription);
return;
}
NSLog(@"%@", responseObject);
}];
[task resume];
}
Aber erhalten Request failed: internal server error (500)
. wenn ich die appendPartWithFormData
auskommentiere und andere Zeile kommentiere, bekomme ich gleiche Bytes in responseObject
.
Weitere Updates:
Wir haben es am Postboten getestet und das Bild wurde erfolgreich hochgeladen. Aber wenn ich etwas in Parameter geben bekomme ich
Request failed: unsupported media type (415)
Großen Dank Rob :) ich Ihre Verlegenheit habe versucht, meine Frage aktualisiert und bekam 'Die Anforderung ist fehlgeschlagen: Interner Serverfehler (500)' die ein Problem aus Backend scheint. Ich werde es bis morgen aktualisieren, da der Backend-Typ für den Tag weg ist. –
Ich frage mich, ob der ungewöhnliche 'image1' Feldname falsch ist (was diese Art von Problemen verursachen könnte). Es könnte Tonnen von Dingen sein. Wir können nicht sagen, ohne Server-Code oder eine klarere Definition von den Back-End-Jungs zu sehen ... – Rob
Hey Rob ... Danke, dass die Probleme gelöst ist. Es war ein Backend-Problem. –