【发布时间】:2014-07-17 22:24:25
【问题描述】:
我有一个 iOS 应用程序,它通过 POST 请求向 YouTube 发送视频文件(通过 OAuth 2.0 授权)。但是,我收到的错误响应是“未找到 (404)”。
我认为问题在于我需要添加一个 JSON 参数正文(例如:https://developers.google.com/youtube/v3/docs/videos#resource),但我不太确定。
我一直按照这个 Google 开发页面上的说明进行操作:https://developers.google.com/youtube/v3/docs/videos/insert#examples
这是我的代码:
NSData *videoData = [NSData dataWithContentsOfURL:videoUrl];
NSString *yt_upload = [NSString stringWithFormat:@"https://www.googleapis.com/upload/youtube/v3/videos&access_token=%@", token_youtube];
NSString *urlString = yt_upload;
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 *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Disposition: form-data; name=\"userfile\"; filename=\".mov\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:videoData]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];
NSHTTPURLResponse *response = nil;
NSError *error = nil;
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(@"%@", response);
NSLog(@"%@", returnString);
NSLog(@"%@", error);
有谁知道怎么回事?为什么视频不能正常上传?
感谢您抽出宝贵时间,丹。
【问题讨论】:
标签: ios cocoa-touch video youtube-api http-post