【问题标题】:Box File Upload API using Objective C使用 Objective C 的 Box 文件上传 API
【发布时间】:2012-11-05 11:33:23
【问题描述】:

我一直在尝试使用 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"];

【问题讨论】:

    标签: iphone objective-c ipad box-api


    【解决方案1】:

    我发现您构建 postBody 的方式存在一些问题。在代码中的字符串文字之间添加换行符只是将它们连接起来。您实际上需要有回车和换行来分隔 HTTP 正文的不同部分。此外,您将两个表单元素混合在一起。 file 和 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";
    

    我认为只要其他一切都正确设置,这应该可以工作。

    【讨论】:

      【解决方案2】:

      使用http://allseeing-i.com/ASIHTTPRequest/

      它使处理多部分表单变得更加容易!

      【讨论】:

      • 请不要在论坛帖子上发布 api_key 和 auth_tokens,它们类似于发布您的用户名和密码。我将建议您编辑您的评论,提取详细信息,并使您在 Box 上的 auth-tokens 无效。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多