2016-12-15 4 views
0

私はiOSアプリケーションで作業しており、Documentum RESTサービスを使用しています。これまですべての "GET"サービスの部分が正常に動作していて、すべてのデータがサーバーから正しく応答しました。しかし、私はいくつかの "POST"の部分をサーバーにドキュメントファイルをアップロードする必要があります。iOSでDocumentum REST Servicesを使用してファイル(pdf、doc、xls)を投稿するObjective C

しかし、サーバーからエラーが発生しました。

次のコードでは、ドキュメントファイルをサーバーにアップロードする際に使用しています。詳細なエラーメッセージも表示されています。

コード:

(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]; 
} 

詳細ERROR:

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)}

私はXcode 8.1iOS 10.1 SimulatorAFNETWorking 3.0を使用しています。私がこれを理解し、私が使用しているように私を案内するのを助けてくださいAFNETWorking初めて。前もって感謝します。

+0

質問をもう少しフォーマットしてみてください。あなたの質問に答えた人たちの努力を期待しているかどうかを尋ねるときに努力を加えます。 ;) – Miki

答えて

0

DocumentumのRESTサービスを呼び出すときあなたは間違っているのContent-Type値を使用している:

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

私はDocumetnum XCP 2.Xから離れてDocumentumのRESTを使用していないが、すべてのケースでapplication/jsonは、右のContentましたタイプ(私はそれがうまくいくと言うわけではない、ちょうどあなたのサービスが期待しているものをチェックアウト)。

+0

ありがとうMikiあなたのクイックレスポンスのために、どのようにして正しいコンテンツタイプを設定できますか? –

+0

私は本当にわかりません、私はObjective-Cの行を書いたことは一度もありませんでした。 – Miki

+0

Miki私はまた、これを読み取ることでこれを実現しています。私はどのようなコンテンツタイプを設定していないでしょう、それがコンテンツタイプに設定する方法:application/vnd.emc.documentum + json。実際、私はヘッダーの値を修正するための助けが必要です。なぜ私は投稿の質問があったのですか?あなたの考えを分かち合うともっと助かります。 –

関連する問題