2016-12-15 1 views
0

Je travaille sur une application iOS et je consomme des services REST Documentum. Jusqu'à maintenant, toute la partie "GET" Service fonctionne correctement toutes les données correctement répondu à partir du serveur. Mais maintenant, je dois faire une partie "POST" pour télécharger des fichiers de documents sur le serveur.Publication de fichier (pdf, doc, xls) à l'aide des services REST Documentum dans iOS Objectif C

Mais je suis resté coincé dans Erreur du serveur.

Donc, le code suivant que j'utilise pour télécharger des fichiers de document sur le serveur et également un message d'erreur détaillé fourni.

code:

(IBAction)btnPostDocumentToServer:(id)sender { 
    NSString *filePath=[[NSBundle mainBundle] pathForResource:@"demotpcode" ofType:@"pdf"]; 
    NSData *pdfData = [NSData dataWithContentsOfFile:filePath]; 
    [self postMultipart:@"http://devser1:9090/dctm-rest/repositories/Mobile/folders/0b03445d800bfa1f" fileName:@"temCodeiOS" file:pdfData progress:nil params:nil]; 
} 

(void)postMultipart: (NSString*) url fileName: (NSString*)name file:(NSData*) fileData progress:(UIProgressView*) progressView params:(NSDictionary*) parametersDictionary { 
    NSDictionary *meta = @{@"properties":@{@"r_object_type": @"ecr_attachment", @"document_id": @"0903445d80210726",@"object_name": @"temCodeiOS.pdf",@"a_content_type":@"pdf",@"subject":@"new Doc from iOS Device"}}; //@{@"propreties": @{@"object_name": name}}; // You can modify this part to add more detail.  
    AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; 
    manager.requestSerializer = [AFJSONRequestSerializer serializer]; 
    [manager.requestSerializer setAuthorizationHeaderFieldWithUsername:[[NSUserDefaults standardUserDefaults] stringForKey:@"username"] password:[[NSUserDefaults standardUserDefaults] stringForKey:@"password"]]; 

    NSMutableURLRequest *request=[manager.requestSerializer multipartFormRequestWithMethod:@"POST" URLString:url parameters:parametersDictionary constructingBodyWithBlock:^(id<AFMultipartFormData> formData){ 
     [formData appendPartWithFileData:metaData name:@"metaData" fileName:@"metaData" mimeType:@"application/json"]; 
     [formData appendPartWithFileData:fileData name:@"binary" fileName:name mimeType:@"text/plain"]; 
    } error:nil]; 

    NSURLSessionUploadTask *uploadTask; // Create resumable task 
    uploadTask = [manager uploadTaskWithStreamedRequest:request progress:^(NSProgress * _Nonnull uploadProgress) { 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      [progressView setProgress:uploadProgress.fractionCompleted]; //Update the progress view 
     }); 
    } 
    completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { 
     if (error) { 
      NSLog(@"Error: %@", error); 
     } else { 
      NSLog(@"%@ %@", response, responseObject); 
     } 
    }]; 

    [uploadTask resume]; 
} 

Détail ERREUR:

Error: Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: bad request (400)" UserInfo={NSUnderlyingError=0x600000056350 {Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: application/vnd.emc.documentum+json" UserInfo={com.alamofire.serialization.response.error.response= { URL: http://devser1:9090/dctm-rest/repositories/Mobile/folders/0b03445d800bfa1f } { status code: 400, headers { Connection = close; "Content-Type" = "application/vnd.emc.documentum+json;charset=UTF-8"; Date = "Thu, 15 Dec 2016 06:46:20 GMT"; Server = "Apache-Coyote/1.1"; "Transfer-Encoding" = Identity; } }, NSErrorFailingURLKey= http://devser1:9090/dctm-rest/repositories/Mobile/folders/0b03445d800bfa1f , com.alamofire.serialization.response.error.data=<7b227374 61747573……>, NSLocalizedDescription=Request failed: bad request (400)}

J'utilise Xcode 8.1, iOS 10.1 Simulator et AFNETWorking 3.0. S'il vous plaît Aidez-moi à comprendre cela et me guider comme j'utilise AFNETWorking Première fois. Merci d'avance.

+0

essayez de formater votre question un peu plus. Ajoutez de l'effort lorsque vous demandez si vous attendez des efforts de ceux qui répondent à votre question. ;) – Miki

Répondre

0

Vous utilisez une mauvaise valeur Content-Type lorsque vous appelez le service Documentum REST:

"Request failed: unacceptable content-type: application/vnd.emc.documentum+json" 

Je n'ai pas utilisé Documentum REST en dehors de Documetnum xCP 2.X, mais dans tous les cas application/json était le droit Content- Tapez (je ne dis pas que ça va marcher, vérifiez ce que votre service attend).

+0

Merci Miki Pour votre réponse rapide, pouvez-vous s'il vous plaît dites-moi comment et où puis-je définir le type de contenu correct? –

+0

Je ne sais vraiment pas, je n'ai jamais écrit une ligne d'Objective-C et du code que vous avez fourni je ne vois pas que vous êtes en train de le placer n'importe où. – Miki

+0

Miki Je réalise aussi ceci en lisant Erreur Je ne mets aucun type de contenu alors Comment ça met en content-type: application/vnd.emc.documentum + json. En fait, j'ai besoin d'aide pour corriger la valeur de mes en-têtes C'est pourquoi j'ai eu une question post. S'il vous plaît partager vos pensées, il sera plus utile. –