2016-10-26 1 views
0

YouTube API를 통해 동영상을 저장하려고합니다. 기본적으로 그것은 이미 하나 개의 예외, 잘 작동 : 내가 주로 사용하고있는 업로드 과정에 대한Java - YouTube API - 동영상의 setPublishAt에서 "400 Bad Request - invalidVideoMetadata"로 연결됩니다.

YouTube.Videos.List listVideosRequest = M_YOUTUBE.videos().list("snippet,status").setId(_dbVideo.getYoutubeId()); 

VideoListResponse listResponse = listVideosRequest.execute(); 

List<Video> videoList = listResponse.getItems(); 
if (videoList.isEmpty()) { 
    return false; 
} 

Video video = videoList.get(0); 
VideoStatus status = video.getStatus(); 

status.setPrivacyStatus(_dbVideo.getPrivacyStatus()); // "private" 

String sPublishedAt = _dbVideo.getPublishedAt(); 
// sPublishAt is in ISO 8106: "2016-10-28T10:01:00.000+02:00" 
if (sPublishedAt != null && sPublishedAt != "") { 
    // this line leads to the bad request. 
    status.setPublishAt(new DateTime(sPublishedAt)); 
} else { 
    status.setPublishAt(null); 
} 

VideoSnippet snippet = video.getSnippet(); 

String sTitle = _dbVideo.getTitle(); 
String sDescription = _dbVideo.getDescription(); 
String sTags = _dbVideo.getTags(); 

... 

snippet.setTitle(sTitle); 
snippet.setDescription(sDescription); 
snippet.setTags(tagList); 
snippet.setCategoryId(_dbVideo.getCategoryId()); 

YouTube.Videos.Update updateVideosRequest = M_YOUTUBE.videos().update("snippet,status", video);   
updateVideosRequest.execute(); 

: 나는 status.setPublishAt() 내가

400 Bad Request 
{ 
    "code" : 400, 
    "errors" : [ { 
    "domain" : "youtube.video", 
    "location" : "body", 
    "locationType" : "other", 
    "message" : "The request metadata is invalid.", 
    "reason" : "invalidVideoMetadata" 
} ], 
"message" : "The request metadata is invalid." 
} 

코드는 다음과 같다 얻을 설정하려고하면 동일한 코드가 있고 거기에서 일하고 있습니다. publishAt 속성을 날짜로 설정하지 않고 대신 null로 설정하기로 결정한 경우 올바르게 작동합니다. 내가 놓친 게 있니?

업데이트 : 비디오는 public으로 한 번만 설정 한 경우에만 발생합니다. 만약 내가 다시 private으로 설정하고 새로운 publishAt을 설정하면 BadRequest을 얻게됩니다.

답변

1

모든 상태 값을 보내야합니다. 그렇지 않으면 업데이트 메소드가 비어있는 것으로 간주합니다. setPrivacyStatus 및 publishat를 보냈습니다. 하지만 다른 모든 매개 변수를 요청에 보내야합니다. 또한 현재 시간에 너무 가까운 publishat 시간을 보내면 badRequest (400) invalidPublishAt가 표시됩니다. 60 분을 넣어보십시오. 그것은 나를 위해 작동합니다.

+0

답장을 보내 주셔서 감사합니다. 그것을 시도했지만 성공하지 못했습니다. 어쨌든, 이것은 왜 실제로 privacystatus와 publishedAt를 null로 설정하는 것과 함께 작동하는지 설명하지 못합니다. – PAWL

+0

@PAWL api가 privacystatus 및 publishedAt를 표시하지 않으면 null임을 의미합니다. 변경하지 않고 서버에 요청을 보낼 때. 그것은 올바르게 작동합니다. – Kumar

+0

@PAWL은 다시 400 badRequest – Kumar

관련 문제