我一直在尝试使用Box 2.0 API
将文件从Objective C客户端上传到我的Box文件夹。我读了几篇文章:
我已尝试成功使用Curl
,如文档中所述,但在尝试创建NSMutableUrlRequest
时总是获得404。
这是我的代码:
NSURL *URL = [NSURL URLWithString:@"https://api.box.com/2.0/files/content"];
urlRequest = [[NSMutableURLRequest alloc]
initWithURL:URL cachePolicy:NSURLRequestReloadIgnoringCacheData
timeoutInterval:30];
[urlRequest setHTTPMethod:@"POST"];
AppDelegate *appDelegate = [AppDelegate sharedDelegate];
NSString *p = [NSString stringWithFormat:@"BoxAuth api_key=%@&auth_token=%@",API_KEY,appDelegate.boxAuthToken];
[urlRequest setValue:p forHTTPHeaderField:@"Authorization"];
[urlRequest setValue:@"multipart/form-data, boundary=AaB03x" forHTTPHeaderField:@"Content-Type"];
NSString *postBody = @"--AaB03x"
@"content-disposition: form-data; name=\"filename\"; filename=\"test.txt\";"
@"folder_id=466838434"
@"Content-type: text/plain"
@""
@"testing box api 2.0"
@""
@"--AaB03x--";
NSData *data = [postBody dataUsingEncoding:NSUTF8StringEncoding];
[urlRequest setHTTPBody:data];
[urlRequest setValue:[NSString stringWithFormat:@"%d",[data length]] forHTTPHeaderField:@"Content-Length"];
答案 0 :(得分:3)
我看到你在构建postBody的方式上遇到了一些问题。在代码中使用字符串文字之间的换行符只是连接它们。实际上,您需要使用回车符和换行符来分隔HTTP正文的不同部分。此外,您将两个表单元素合并为一个。文件和folder_id是两个单独的表单元素。你可以尝试这样的事情:
NSString *postBody = @"\r\n--AaB03x\r\n"
"Content-Disposition: form-data; filename=\"test.txt\"\r\n"
"Content-Type: text/plain\r\n\r\n"
"testing box api 2.0"
"\r\n--AaB03x\r\n"
"Content-Disposition: form-data; name=\"folder_id\";\r\n\r\n"
"0"
"\r\n--AaB03x--\r\n\r\n";
我认为如果其他所有内容都已正确设置,那么应该可行。
答案 1 :(得分:0)
使用http://allseeing-i.com/ASIHTTPRequest/
这使得处理多部分表单变得更加容易!