当前位置: 首页 > 知识库问答 >
问题:

在iOS Objective C中使用Documentum REST Services发布文件(pdf、doc、xls)

郏景澄
2023-03-14

我正在开发一个 iOS 应用程序,我正在使用 Documentum REST 服务。到目前为止,所有“GET”服务部分都工作正常,所有数据都从服务器正确响应。但现在我需要做一些“POST”部分将文档文件上传到服务器。

但是我被服务器的错误卡住了。

所以下面的代码,我用来上传文件文件到服务器,也提供了详细的错误信息。

法典:

(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 Domain=com.alamofire.Error.serialization。响应代码=-1011“请求失败:错误请求(400)”用户信息={NSUnderlyingError=0x600000056350{Error Domain=com.alamofire.Error.serialization.response Code=-1016“请求失败”:不可接受的内容类型:application/vnd.emc.documentum json”用户信息={com.alanofire.serialize.responce.Error.响应={URL:http://devser1:9090/dctm-rest/repositories/Mobile/folders/0b03445d800bfa1f}{状态代码:400,标题{Connection=close;内容类型=“application/vnd.emc.documentum json;charset=UTF-8;日期=“Thu,15 Dec 2016 06:46:20 GMT”;服务器=“Apache Coyote/1.1”;传输编码=“Identity;”},NSErrorFailingURLKey=http://devser1:9090/dctm-rest/repositories/Mobile/folders/0b03445d800bfa1f,com.alamofire.serialization.response.error.data=

我用的是< code>Xcode 8.1、< code>iOS 10.1模拟器和< code>AFNETWorking 3.0。第一次使用< code>AFNETWorking时,请帮助我理解并指导我。提前感谢。

共有1个答案

何哲
2023-03-14

调用Documentum REST service时使用了错误的内容类型值:

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

除了 Documetnum xCP 2.X 之外,我没有使用 Documentum REST,但在所有情况下,application/json 都是正确的内容类型(我不是说它会起作用,只要看看你的服务期望是什么)。

 类似资料:
  • 我正在尝试将pdf或doc文件上传到由laravel组成的网站上。这是我的刀片页面。 这是我的控制器 我得到一个错误说非静态方法Illumate\Http\Request::file()不应该被静态调用来修复这个问题 使用照明\支持\外观\请求 而不是 使用照明\Http\Request; 但是后来我收到一个错误,说我不能使用验证。任何形式的帮助都将不胜感激。

  • 1.引入js文件 在页面中引入: var fileApi = require("$UI/system/components/justep/docCommon/fileApi"); 2.调用fileApi的browse方法 打开本地文件,例: var url = require.toUrl("./file/abc.docx"); var name = "abc"; fileApi.bro

  • 我正在编写一个java代码,它利用Apache-poi读取ms-office.doc文件,利用itext jar API创建并写入pdf文件。我已经阅读了.doc文件中打印的文本和表格。现在我正在寻找一个读取文档中写入的图像的解决方案。我已经编写了如下代码来读取文档文件中的图像。为什么这段代码不起作用。 存在的问题是:1。条件if(Picture.HasPicture(run))不满足,但文档具有

  • 问题内容: 最终用户应该通过文件浏览器上传excel文件: 动作: 服务内容: 该文件应发送到使用Spring Boot接受的多部分文件构建的POST REST端点。端点无法识别这样发送文件 如何发布Excel文件? 编辑:我现在正在尝试发布文件列表: 但是data.append(’file’,files [i]); 总是返回未定义的 问题答案: 通过表单将文件传递到后端。 如果您现在检查发送到后

  • 问题内容: 我正在使用python-mosquitto订阅我的MQTT代理,该代理支持文件类型上传。从命令行在Mosquitto上使用- f标志可以很好地使用它。但是,当我从python脚本中进行操作时,我无法弄清楚如何使用client.publish(topic,有效负载)指定要发布的文件。 当我尝试向它扔一些奇怪的东西时,Python mosquitto给了我错误。我已经有一个文件存储在本地目

  • 我需要使用python将.doc和.docx文件转换为.pdf。我已经看到了一些可用的答案,但它们使用的是comtypes和OpenWordApplication。我不能那样做。我寻求的是一种使用一些python库的方法,这些库保留字体、表格、标题大小和图像等,而不打开MS Word或LibreOffice或类似的东西,如果需要的话,将.doc和.docx文件转换为某种中间格式(然后将该格式转换为