- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的应用程序中集成了 youtube channel ,但它没有显示所有视频。对于某些 channel ,它只显示很少的视频。如果我将 throw new RuntimeException(e);
while捕获 JSONException 应用程序崩溃并显示以下错误-
11-02 20:00:40.868: E/AndroidRuntime(15351): FATAL EXCEPTION: AsyncTask #1
11-02 20:00:40.868: E/AndroidRuntime(15351): java.lang.RuntimeException: An error occured while executing doInBackground()
11-02 20:00:40.868: E/AndroidRuntime(15351): at android.os.AsyncTask$3.done(AsyncTask.java:299)
11-02 20:00:40.868: E/AndroidRuntime(15351): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
11-02 20:00:40.868: E/AndroidRuntime(15351): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
11-02 20:00:40.868: E/AndroidRuntime(15351): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
11-02 20:00:40.868: E/AndroidRuntime(15351): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
11-02 20:00:40.868: E/AndroidRuntime(15351): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
11-02 20:00:40.868: E/AndroidRuntime(15351): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
11-02 20:00:40.868: E/AndroidRuntime(15351): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
11-02 20:00:40.868: E/AndroidRuntime(15351): at java.lang.Thread.run(Thread.java:856)
11-02 20:00:40.868: E/AndroidRuntime(15351): Caused by: java.lang.RuntimeException: org.json.JSONException: No value for videoId
11-02 20:00:40.868: E/AndroidRuntime(15351): at com.wingnity.jsonparsingtutorial.SoundcloudActivity$JSONAsyncTask.doInBackground(SoundcloudActivity.java:223)
11-02 20:00:40.868: E/AndroidRuntime(15351): at com.wingnity.jsonparsingtutorial.SoundcloudActivity$JSONAsyncTask.doInBackground(SoundcloudActivity.java:1)
11-02 20:00:40.868: E/AndroidRuntime(15351): at android.os.AsyncTask$2.call(AsyncTask.java:287)
11-02 20:00:40.868: E/AndroidRuntime(15351): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
11-02 20:00:40.868: E/AndroidRuntime(15351): ... 5 more
11-02 20:00:40.868: E/AndroidRuntime(15351): Caused by: org.json.JSONException: No value for videoId
11-02 20:00:40.868: E/AndroidRuntime(15351): at org.json.JSONObject.get(JSONObject.java:354)
11-02 20:00:40.868: E/AndroidRuntime(15351): at org.json.JSONObject.getString(JSONObject.java:510)
11-02 20:00:40.868: E/AndroidRuntime(15351): at com.wingnity.jsonparsingtutorial.SoundcloudActivity$JSONAsyncTask.doInBackground(SoundcloudActivity.java:191)
11-02 20:00:40.868: E/AndroidRuntime(15351): ... 8 more
11-02 20:00:40.952: E/AppErrorDialog(348): Failed to get ILowStorageHandle instance
11-02 20:00:41.476: E/WindowManager(15351): Activity com.wingnity.jsonparsingtutorial.SoundcloudActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@41929000 that was originally added here
11-02 20:00:41.476: E/WindowManager(15351): android.view.WindowLeaked: Activity com.wingnity.jsonparsingtutorial.SoundcloudActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@41929000 that was originally added here
11-02 20:00:41.476: E/WindowManager(15351): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:418)
11-02 20:00:41.476: E/WindowManager(15351): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:294)
11-02 20:00:41.476: E/WindowManager(15351): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:226)
这是我要整合的 channel -
http://www.youtube.com/user/BeingIndianchannel
它只显示最新的三个视频这是代码-
ArrayList<Channel> actorsList;
//private static String url = "https://www.googleapis.com/youtube/v3/search?key=xyz&channelId=UCdf6i1jTJl0TLzXc1KMDMKA&part=snippet,id&order=date&maxResults=20";
String videoid;
// JSON Node names
private static final String TAG_ITEMS = "items";
private static final String TAG_KIND = "kind";
private static final String TAG_ETAG = "etag";
private static final String TAG_ID = "id";
private static final String TAG_KINDV = "kind";
private static final String TAG_VIDEOID = "videoId";
private static final String TAG_SNIPPET = "snippet";
private static final String TAG_PUBLISHED = "publishedAt";
private static final String TAG_CHANNELID = "channelId";
private static final String TAG_TITLE = "title";
private static final String TAG_DESCRIPTION = "description";
private static final String TAG_THUMBNAILS = "thumbnails";
private static final String TAG_DEFAULT = "default";
private static final String TAG_URL = "url";
private static final String TAG_MEDIUM = "medium";
private static final String TAG_URL2 = "url";
private static final String TAG_HIGH = "high";
private static final String TAG_URL3 = "url";
private static final String TAG_CHANNEL = "channelTitle";
private static final String TAG_BROADCAST = "liveBroadcastContent";
ChannelAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.youtubevidlist);
actorsList = new ArrayList<Channel>();
new JSONAsyncTask().execute("https://www.googleapis.com/youtube/v3/search?key=xyz&channelId=UChAlpEbfW1y9auiBC08ZwGQ&part=snippet,id&order=date&maxResults=20");
ListView listview = (ListView)findViewById(R.id.list);
adapter = new ChannelAdapter(getApplicationContext(), R.layout.row, actorsList);
listview.setAdapter(adapter);
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long id) {
// TODO Auto-generated method stub
String name = ((TextView) arg1.findViewById(R.id.name_label))
.getText().toString();
Intent in = new Intent(getApplicationContext(),
YoutubeActivity2.class);
in.putExtra("TAG_VIDEOID", name);
startActivity(in);
;
}
});
}
class JSONAsyncTask extends AsyncTask<String, Void, Boolean> {
ProgressDialog dialog;
@Override
protected void onPreExecute()
{
super.onPreExecute();
dialog = new ProgressDialog(SoundcloudActivity.this);
dialog.setMessage("Loading, please wait");
dialog.setTitle("Connecting server");
dialog.show();
dialog.setCancelable(false);
}
@Override
protected Boolean doInBackground(String... urls) {
try {
//------------------>>
HttpGet httppost = new HttpGet(urls[0]);
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(httppost);
// StatusLine stat = response.getStatusLine();
int status = response.getStatusLine().getStatusCode();
if (status == 200) {
HttpEntity entity = response.getEntity();
String data = EntityUtils.toString(entity);
JSONObject jsono = new JSONObject(data);
JSONArray jarray = jsono.getJSONArray(TAG_ITEMS);
for (int i = 0; i < jarray.length(); i++) {
JSONObject c = jarray.getJSONObject(i);
Channel actor = new Channel();
actor.setKind(c.getString(TAG_KIND));
actor.setEtag(c.getString(TAG_ETAG));
JSONObject id = c.getJSONObject(TAG_ID);
actor.setKind2(id.getString(TAG_KINDV));
actor.setVideoid(id.getString(TAG_VIDEOID));
JSONObject snippet = c.getJSONObject(TAG_SNIPPET);
actor.setPublished(snippet.getString(TAG_PUBLISHED));
actor.setChannelid(snippet.getString(TAG_CHANNELID));
actor.setTitle(snippet.getString(TAG_TITLE));
actor.setDescription(snippet.getString(TAG_DESCRIPTION));
JSONObject thumbnail = snippet.getJSONObject(TAG_THUMBNAILS);
JSONObject defaul = thumbnail.getJSONObject(TAG_DEFAULT);
actor.setUri1(defaul.getString(TAG_URL));
JSONObject medium = thumbnail.getJSONObject(TAG_MEDIUM);
actor.setUri2(medium.getString(TAG_URL2));
JSONObject high = thumbnail.getJSONObject(TAG_HIGH);
actor.setUri3(high.getString(TAG_URL3));
actor.setChannel(snippet.getString(TAG_CHANNEL));
actor.setBroadcast(snippet.getString(TAG_BROADCAST));
actorsList.add(actor);
}
return true;
}
//------------------>>
} catch (ParseException e1) {
e1.printStackTrace();
Log.e("exception","ParseException");
} catch (IOException e) {
e.printStackTrace();
Log.e("exception","IOException");
} catch (JSONException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
return false;
}
protected void onPostExecute(Boolean result) {
dialog.cancel();
adapter.notifyDataSetChanged();
if(result == false)
Toast.makeText(getApplicationContext(), "Unable to fetch data from server", Toast.LENGTH_LONG).show();
}
}
}
最佳答案
Caused by: org.json.JSONException: No value for videoId
根据 the API :
If the id.type property's value is youtube#video, then this property will be present and its value will contain the ID that YouTube uses to uniquely identify a video that matches the search query.
videoId
是可选值。在调用 JSONObject.getString()
之前,您需要使用 JSONObject.has()
检查它是否存在。
关于java - 加载集成的 youtube channel 视频时出现 JSONException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26701469/
我很好奇为什么以下不起作用。一般select用default:防止死锁,但在这种情况下不是: package main import "fmt" func main () { a := mak
我一生都无法弄清楚如何切换图像排序。图像以 (x,x,3) 格式读取,theano 要求它是 (3,x,x) 格式。我尝试更改顺序numpy.array([img[:,:,i] for i in ra
我正在向 libnl 发送单个 SSID 和频率进行扫描,但我得到了多个扫描结果以及我请求的 SSID 和频率,但我需要单个扫描结果(仅适用于请求的 SSID),如何实现这一点。请帮助我,我也发送了我
我是 Golang 的新手,但正在努力理解这门伟大的语言!请帮帮我.. 我有 2 个 channel 。 “进”和“出” channel in, out := make(chan Work),
例如我有这段代码: package main import ( "fmt" ) func main() { c1 := make(chan interface{}) close
我们使用以下调用来获取经过身份验证的用户的 ChannelID,它适用于大多数情况。一些 YouTube 用户将他们的 channel 连接到 Google+ 信息页,但在这种情况下,我们的一位用户无
case 'sinfo': const sinfo = new Discord.MessageEmbed() .addField('Server Name 🔎 :', message.guild.n
我需要让所有 channel 来创建一个 bunker 命令,这使得所有 channel 都是只读的。 最佳答案 他们变了Client.servers至 Client.guilds在 newer ve
为什么当第二个值通过另一个 go routine 发送并且没有收到发送的第一个值时, channel c 没有缓冲? package main import "fmt" func sum(s []in
据我所知,内置的 split 会将一个 3 channel Mat 拆分为三个 1 channel Mat。结果,这三个 Mat 只是具有一些不同强度的灰度。 我的意图是获得三个 3 channel
如何检测当前的 RAM 配置?我需要询问 Windows RAM 当前是在单 channel 、双 channel 还是四 channel 中运行。 我搜索了很多,并没有在这个网站或其他网站上找到任何
我需要拆分一个多 channel wav 文件并将每个 channel 编码为 mp3 文件。 我知道 gtresamer 的 deinterleave 插件,但我不确定如何将它用于 wav 文件以及
关闭。这个问题需要details or clarity .它目前不接受答案。 想要改进这个问题吗? 通过 editing this post 添加详细信息并澄清问题. 关闭 8 年前。 Improve
我正在尝试运行 Hyperledger Fabric 网络,它由单个订购者、单个对等节点和一个 cli 组成。为了学习启动 Hyperledger Fabric 网络的过程,从创建与加密相关的工件到将
我在 Laravel 中使用事件广播。我正在使用基于角色的通知访问权限。我有用于广播的自定义 auth guard。当用户连接到 channel 时,客户端将具有内部权限的 access_token
我正在编写一个使用 Elixir Channels 来处理实时事件的应用程序。我知道每个客户端将打开 1 个套接字,并且可以在其上多路复用多个 channel 。所以我的应用程序是一个聊天应用程序,其
我有一些 .wav 文件,我想转换它们的频率 (fs) 和 channel 数 (nchannels)。我在jupyter笔记本python3.6上使用ffmpeg。我使用了以下命令并且它有效。 cm
我有一个视频渲染器,它需要两个 H265 流(YUV420),我需要烘焙它们以使它们中的一个与另一个形成 alpha 蒙版。这一切都已解决并且效果很好,但是如果我按照此处的说明进行操作: ffmpeg
我运行此命令以便能够将 udp 直播流传输到可使用正在构建的移动应用程序播放的 http 直播流。 它只是一个只有音频流的流。 ffmpeg -i udp://@localhost:1111 -map
我在我的 discord.js 机器人中创建了 nuke 命令,它创建了具有相同名称、权限、主题等的 channel ,并删除了“原始” channel 。但是有一个问题,如何使 channel 与“
我是一名优秀的程序员,十分优秀!