【问题标题】:Gdata youtube upload failedWithStatus:400Gdata youtube上传失败WithStatus:400
【发布时间】:2012-01-08 23:43:00
【问题描述】:

我有一个小应用程序,我在其中使用 gdata 将视频上传到 youtube。每次尝试时,我都会收到以下错误:“serviceBase: objectFetcher: failedWithStatus:400 data:GDataInvalidRequestUriExceptionMissing or invalid username。”

我尝试使用我的 youtube 帐户或我的 gmail 帐户,但都没有成功。任何帮助将不胜感激。

代码如下:

NSString *devKey = DEVELOPER_KEY;

GDataServiceGoogleYouTube *service = [self youTubeService];
[service setYouTubeDeveloperKey:devKey];

NSString *username = @".........@gmail.com";
NSString *clientID = CLIENT_ID;

NSURL *url = [GDataServiceGoogleYouTube youTubeUploadURLForUserID:username
                                                         clientID:clientID];

// load the file data

NSString  *videoPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/output.mp4"];

//    NSString *path = [[NSBundle mainBundle] pathForResource:@"YouTubeTest" ofType:@"m4v"]; 
NSData *data = [NSData dataWithContentsOfFile:videoPath];
NSString *filename = [videoPath lastPathComponent];

// gather all the metadata needed for the mediaGroup
NSString *titleStr = [titleTextField text];
GDataMediaTitle *title = [GDataMediaTitle textConstructWithString:titleStr];

NSString *categoryStr = [mCategoryField text];
GDataMediaCategory *category = [GDataMediaCategory mediaCategoryWithString:categoryStr];
[category setScheme:kGDataSchemeYouTubeCategory];

NSString *descStr = [mDescriptionField text];
GDataMediaDescription *desc = [GDataMediaDescription textConstructWithString:descStr];

NSString *keywordsStr = [mKeywordsField text];
GDataMediaKeywords *keywords = [GDataMediaKeywords keywordsWithString:keywordsStr];

BOOL isPrivate = mIsPrivate;

GDataYouTubeMediaGroup *mediaGroup = [GDataYouTubeMediaGroup mediaGroup];
[mediaGroup setMediaTitle:title];
[mediaGroup setMediaDescription:desc];
[mediaGroup addMediaCategory:category];
[mediaGroup setMediaKeywords:keywords];
[mediaGroup setIsPrivate:isPrivate];


NSString *mimeType = [GDataUtilities MIMETypeForFileAtPath:videoPath defaultMIMEType:@"video/mp4"];

// create the upload entry with the mediaGroup and the file data
GDataEntryYouTubeUpload *entry;

NSLog(@"%@", mimeType);

entry = [GDataEntryYouTubeUpload uploadEntryWithMediaGroup:mediaGroup
                                                      data:data
                                                  MIMEType:mimeType
                                                      slug:filename];

SEL progressSel = @selector(ticket:hasDeliveredByteCount:ofTotalByteCount:);
[service setServiceUploadProgressSelector:progressSel];

GDataServiceTicket *ticket;
ticket = [service fetchEntryByInsertingEntry:entry
                                  forFeedURL:url
                                    delegate:self
                           didFinishSelector:@selector(uploadTicket:finishedWithEntry:error:)];

[self setUploadTicket:ticket];

}

【问题讨论】:

    标签: objective-c ios xcode youtube gdata


    【解决方案1】:

    错误代码 400 是错误请求“无效的请求 URI 或标头,或不受支持的非标准参数”。这基本上意味着您的请求格式错误。 HTTP Status Codes 解释所有错误代码的链接。

    你能发布你用来上传视频的代码吗?

    编辑: 您可以使用YouTube Sample 上传吗?

    如果这工作正常,它将证明你的 devkey 工作正常。它还将表明这是以下行中的一个问题:

    NSString *username = @".........@gmail.com";
    NSString *clientID = CLIENT_ID;
    
    NSURL *url = [GDataServiceGoogleYouTube youTubeUploadURLForUserID:username
                                                         clientID:clientID];
    
    NSString  *videoPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/output.mp4"];
    

    同样,如果示例 YouTube 示例正常工作,那么问题是

    1. 客户端尚未使用您的 devkey 进行身份验证。 或
    2. videoPath 位置不正确。

    【讨论】:

    • 抱歉耽搁了……我无法使用 Youtube 示例上传……同样的错误。
    猜你喜欢
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2019-08-23
    • 2016-09-12
    • 1970-01-01
    相关资源
    最近更新 更多