如何使用objective-c将文件上载到box api?

如何使用objective-c将文件上载到box api?,objective-c,box-api,Objective C,Box Api,我使用AFN网络进行网络操作 那么,将请求发送到服务器的正确方式是什么? 现在我收到HTTP//1.1500内部服务器错误 代码 NSMutableData *body = [NSMutableData data]; NSString *boundaryString = [NSString stringWithFormat:@"rn-------------------------%.0frn", [[NSDate date] timeIntervalSince1970]]; NSData *b

我使用AFN网络进行网络操作

那么,将请求发送到服务器的正确方式是什么? 现在我收到HTTP//1.1500内部服务器错误

代码

NSMutableData *body = [NSMutableData data];
NSString *boundaryString = [NSString stringWithFormat:@"rn-------------------------%.0frn", [[NSDate date] timeIntervalSince1970]];
NSData *boundary = [boundaryString dataUsingEncoding:NSUTF8StringEncoding];

NSURL *url = [NSURL URLWithString:kBoxNetFileUploadURLFormat];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[BoxNet attachAuthHeaderForRequest:request];

[request addValue:[BoxNet SHA1:content] forHTTPHeaderField:@"Content-MD5"];
[request addValue:[NSString stringWithFormat:@"multipart/form-data; boundary=\"%@\"", boundaryString] forHTTPHeaderField:@"Content-Type"];


[body appendData:boundary];

[body appendData:[@"Content-Disposition: form-data; name=\folder_id\"" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[folderID dataUsingEncoding:NSUTF8StringEncoding]];

[body appendData:boundary];

[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; filename=\"%@\"; name=\"filename\"", filename] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-stream" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:content];

[body appendData:boundary];

[request setHTTPBody:body];
[request setValue:[NSString stringWithFormat:@"%d", body.length] forHTTPHeaderField:@"Content-Length"];


AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
    completion(JSON, nil);
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *err, id JSON) {
    completion(JSON, err);
}];

[operation start];

我个人更喜欢上传文件和发布表单数据的HttpRequest,它非常适合用户,这里是问题是
错误的边界和参数格式设置
,请求处理也是一样的

附加新代码:

NSMutableData *body = [NSMutableData data];
NSString *boundary = [NSString stringWithFormat:@"%.0f", [[NSDate date] timeIntervalSince1970]];

NSURL *url = [NSURL URLWithString:@"https://api.box.com/2.0/files/content"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[BoxNet attachAuthHeaderForRequest:request];

[request addValue:[BoxNet SHA1:content] forHTTPHeaderField:@"Content-MD5"];
[request addValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary] forHTTPHeaderField:@"Content-Type"];

// add file body and filename
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition:form-data;filename=\"%@\";name=\"filename\"\r\n", filename] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type:application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:content];

// folder id
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Disposition:form-data;name=\"folder_id\"\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[folderID dataUsingEncoding:NSASCIIStringEncoding]];

[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];

[request setHTTPBody:body];

多亏了这篇文章,我解决了我的问题:

作者被遗弃在这个图书馆。所以我不想使用它,因为如果将来出现问题,作者不可能维护它的代码。谢谢,噢!谢谢你提供的信息。我不知道其他图书馆的情况。这里的一些专家将帮助您。:-)@h4cky,谢谢你的链接。