使用新的Copy.com API。成功地与OAuth1登录并请求配置文件数据,并且可以成功地创建文件夹。
如果您在这里查看API文档:https://www.copy.com/developer/documentation#api-calls/filesystem,并转到关于向API发出POST
请求以创建新文件的部分,对我来说,头的说明有点奇怪。见这里:
Content-Type:multipart/form-data; boundary=----WebKitFormBoundary5dcD4Bk7SevSsaMg
Content-Disposition: form-data; name="X-Api-Version"
1.0
------WebKitFormBoundary5dcD4Bk7SevSsaMg
Content-Disposition: form-data; name="file"; filename="animation.gif"
Content-Type: image/gif
<BASE64 ENCODED FILE STRUCTURE>
------WebKitFormBoundary5dcD4Bk7SevSsaMg--
如您所见,Content-Type
和Content-Disposition
有多个标头字段,由boundary
参数分隔。当使用NSMutableURLRequest和-setValue:forHTTPHeaderField
时,我只是覆盖以前的值。以下是我的标题字段的内容:
NSString *boundaryString = @"----WebKitFormBoundary5dcD4Bk7SevSsaMg";
NSString *disposition = @"Content-Disposition: form-data; name=\"ThankYou.mp3\" filename=\"ThankYou.mp3\"";
NSString *type = @"Content-Type: audio/mp3";
NSData *dispositionData = [disposition dataUsingEncoding:NSUTF8StringEncoding];
NSData *typeData = [type dataUsingEncoding:NSUTF8StringEncoding];
NSData *boundaryData = [boundaryString dataUsingEncoding:NSUTF8StringEncoding];
NSMutableData *songData = [NSMutableData data];
[songData appendData:boundaryData];
[songData appendData:dispositionData];
[songData appendData:typeData];
[songData appendData:mp3Data]; //initiated before. From my mainBundle.
[songData appendData:boundaryData];
[request setHTTPBody:songData];
[self.myAuth authorizeRequest:request];
[request setValue:@"1" forHTTPHeaderField:@"X-Api-Version"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"multipart/form-data; boundary=----WebKitFormBoundary5dcD4Bk7SevSsaMg" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"form-data; name=\"X-Api-Version\"=1.0" forHTTPHeaderField:@"Content-Disposition"];
如您所见,我试图复制POST请求的结构,方法是在实际的正文数据前面添加一个边界、内容处理和内容类型,然后在末尾追加一个边界。
最后,我只在Copy.com上创建了一个名为“Copy.com”的文件夹,这就是当您使用空的body数据发出POST请求时所发生的情况。我向你保证身体数据不是空的
有人能帮我吗?
发布于 2013-08-31 05:48:05
这个类中使用的代码经过测试才能工作:COCopyClient.m
仅仅使用库:复制-sdk可能会更容易
https://stackoverflow.com/questions/18347788
复制