我正在使用iOS应用程序,并且正在使用Documentum REST服务。直到现在,所有“GET”服务部分都正常工作,所有数据都正确地从服务器响应。但现在我需要做一些“POST”部分来将文档文件上传到服务器。在iOS中使用Documentum REST服务的文件(pdf,doc,xls)目标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.1
,iOS 10.1 Simulator
和AFNETWorking 3.0
。请帮助我理解这一点并引导我,因为我第一次使用AFNETWorking
。提前致谢。
尝试格式化您的问题多一点。当询问你是否期待为回答你的问题的人付出努力时增加努力。 ;) – Miki