【发布时间】:2014-03-21 09:31:09
【问题描述】:
我想将我通过 DocuSign API 作为 NSData 获得的文档发送到有服务的网站。
服务是
POST /api/v1/rest/groups/[:idgroup]/documents/upload/[:oauthtoken]
需要的参数是:
- file --> 要上传的文件(类型:inputstream)
- fileName --> 要上传的新文件的名称(类型:字符串)
- length --> 上传文件的字节大小(类型:long)
我正在尝试使用此示例 Uploading Image via POST in Objective C 执行请求,但我有一个服务错误提示 "InvalidParametersServiceApiException"
我的代码是:
NSString *filename = @"docusignTest.pdf";
NSMutableURLRequest* request= [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
NSMutableData *postbody = [NSMutableData data];
[postbody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"fileName\"; \r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[[NSString stringWithFormat:@"\r\n%@",filename] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"length\"; \r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[[NSString stringWithFormat:@"\r\n%lu",(unsigned long)oResponseData.length] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postbody appendData:[NSData dataWithData:oResponseData]];
[postbody appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:postbody];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *responseString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
【问题讨论】:
-
我看不到您实际将 PDF 转换为数据并包含在正文中的位置?
-
数据是
oResponseData,它是正确的,因为如果我将数据保存为 PDF,我可以正确读取它。oResponseData是我获得的 DocuSign 服务的响应,如本例所示 iodocs.docusign.com/APIWalkthrough/getEnvelopeDocuments
标签: objective-c httprequest docusignapi http-post