【问题标题】:POST request video - iOSPOST 请求视频 - iOS
【发布时间】: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


    【解决方案1】:

    我最终设法解决了这个问题。主要问题是您必须处理来自 YouTube 服务器的两个请求/响应。在第一个请求中,您设置了 OAuth 标头和参数以及包含您的视频信息的 JSON 正文。如果正确发送此请求,则会向您发送一个带有上传 URL 的响应。然后,您需要使用实际视频文件向上传 URL 发出另一个请求。然后它就会起作用。

    【讨论】:

      猜你喜欢
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      • 2013-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多