如何获得 Youtube Api Json 响应
How to get Youtube Api Json Response
我在我的应用程序中实施了插入评级方法。我搜索了超过 1 天才能得到回复。在 this page i have check that insert like method and json is giving response . Look .
但我找不到任何方法在我的应用程序中获得响应。我该如何解决这个问题?
@SuppressLint("StaticFieldLeak")
class Insert extends AsyncTask<Object,Object, Object> {
@Override
protected Object doInBackground(Object... objects) {
if (Email!=null){
mCredential = GoogleAccountCredential.usingOAuth2(
getApplicationContext(), Arrays.asList(YouTubeScopes.YOUTUBE))
.setBackOff(new ExponentialBackOff());
mCredential.setSelectedAccountName(Email);
HttpTransport transport = AndroidHttp.newCompatibleTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
YouTube youtubeService = new YouTube.Builder(
transport, jsonFactory, mCredential)
.setApplicationName(LikeInsertActivity.this.getResources().getString(R.string.app_name))
.build();
// Define and execute the API request
try {
YouTube.Videos.Rate request = youtubeService.videos()
.rate(VID, "like");
request.execute();
runOnUiThread(new Runnable() {
public void run() {
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}
Rate.execute() 的 return 类型为 Void。查看 HTTP 时,您似乎收到 204 无内容的良好响应,否则出现异常。
https://developers.google.com/youtube/v3/docs/videos/rate
正如 @mavriksc
提到的那样 Rate.execute()
returns Void
。这是因为所有这些对象都是基于 superclass
com.google.api.services.youtube.YouTubeRequest<java.lang.Void>
但是,除了 execute
方法之外,您还可以使用 AbstractGoogleClientRequest
定义的其他方法,它是 YouTubeRequest
.
的超级 class
例如executeUnparsed
returns a com.google.api.client.HttpResponse
对象。
因此获取 HttpResponse
对象并检查 StatusCode 与 204
似乎是您想要的解决方案。
示例:
try {
final YouTube.Videos.Rate request = youtubeService.videos().rate(VID, "like");
runOnUiThread(new Runnable() {
public void run() {
HttpResponse response = request.executeUnparsed();
// There should be a matching constant for 204 defined somewhere, I haven't found it yet
if (response.getStatusCode() == 204) {
// request successfull
}
}
});
} catch (IOException e) {
e.printStackTrace();
}
注:
Android 强制开发人员在后台任务中做某些(耗时的)事情(如网络通信)以防止 UI 阻塞。
我在我的应用程序中实施了插入评级方法。我搜索了超过 1 天才能得到回复。在 this page i have check that insert like method and json is giving response . Look
但我找不到任何方法在我的应用程序中获得响应。我该如何解决这个问题?
@SuppressLint("StaticFieldLeak")
class Insert extends AsyncTask<Object,Object, Object> {
@Override
protected Object doInBackground(Object... objects) {
if (Email!=null){
mCredential = GoogleAccountCredential.usingOAuth2(
getApplicationContext(), Arrays.asList(YouTubeScopes.YOUTUBE))
.setBackOff(new ExponentialBackOff());
mCredential.setSelectedAccountName(Email);
HttpTransport transport = AndroidHttp.newCompatibleTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
YouTube youtubeService = new YouTube.Builder(
transport, jsonFactory, mCredential)
.setApplicationName(LikeInsertActivity.this.getResources().getString(R.string.app_name))
.build();
// Define and execute the API request
try {
YouTube.Videos.Rate request = youtubeService.videos()
.rate(VID, "like");
request.execute();
runOnUiThread(new Runnable() {
public void run() {
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}
Rate.execute() 的 return 类型为 Void。查看 HTTP 时,您似乎收到 204 无内容的良好响应,否则出现异常。
https://developers.google.com/youtube/v3/docs/videos/rate
正如 @mavriksc
提到的那样 Rate.execute()
returns Void
。这是因为所有这些对象都是基于 superclass
com.google.api.services.youtube.YouTubeRequest<java.lang.Void>
但是,除了 execute
方法之外,您还可以使用 AbstractGoogleClientRequest
定义的其他方法,它是 YouTubeRequest
.
例如executeUnparsed
returns a com.google.api.client.HttpResponse
对象。
因此获取 HttpResponse
对象并检查 StatusCode 与 204
似乎是您想要的解决方案。
示例:
try {
final YouTube.Videos.Rate request = youtubeService.videos().rate(VID, "like");
runOnUiThread(new Runnable() {
public void run() {
HttpResponse response = request.executeUnparsed();
// There should be a matching constant for 204 defined somewhere, I haven't found it yet
if (response.getStatusCode() == 204) {
// request successfull
}
}
});
} catch (IOException e) {
e.printStackTrace();
}
注:
Android 强制开发人员在后台任务中做某些(耗时的)事情(如网络通信)以防止 UI 阻塞。