What cause java.net.MalformedURLException: no protocol: when trying to replace json array asset file to api Json array data?

huangapple 未分类评论47阅读模式
英文:

What cause java.net.MalformedURLException: no protocol: when trying to replace json array asset file to api Json array data?

问题

以下是修改后的代码,其中我只翻译了注释和字符串内容:

  1. @Override
  2. public void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. setContentView(R.layout.sample_chooser_activity);
  5. sampleAdapter = new SampleAdapter();
  6. ExpandableListView sampleListView = findViewById(R.id.sample_list);
  7. sampleListView.setAdapter(sampleAdapter);
  8. sampleListView.setOnChildClickListener(this);
  9. Intent intent = getIntent();
  10. String dataUri = intent.getDataString();
  11. String[] uris;
  12. if (dataUri != null) {
  13. uris = new String[] {dataUri};
  14. } else {
  15. ArrayList<String> uriList = new ArrayList<>();
  16. // 在这里传递 JSON 数据------------------
  17. urlvideo = getIntent().getStringExtra("dataVideos");
  18. Log.e("TEST>>>>>>", urlvideo);
  19. JSONArray jsonArray = null;
  20. try {
  21. jsonArray = new JSONArray(urlvideo);
  22. Log.e("TEST>>>>>> 2222", String.valueOf(jsonArray));
  23. } catch (JSONException e) {
  24. e.printStackTrace();
  25. }
  26. for (int i = 0; i < jsonArray.length(); i++) {
  27. JSONObject explrObject = null;
  28. try {
  29. explrObject = jsonArray.getJSONObject(i);
  30. Log.e("TEST>>>>>> 3333", String.valueOf(explrObject));
  31. } catch (JSONException e) {
  32. e.printStackTrace();
  33. }
  34. uriList.add(String.valueOf(explrObject));
  35. }
  36. uris = new String[uriList.size()];
  37. uriList.toArray(uris);
  38. Arrays.sort(uris);
  39. }
  40. // ...
  41. }

这是我翻译后的代码,仅涉及注释和字符串的翻译。如果您有任何问题或需要进一步帮助,请随时问我。

英文:

Instead of passing/reading data from json asset file, i am trying to use direct JSON data from api. (i am passing json array data using Intent)

Same content data of json asset is using in api.

is previous code (it read data from JSON asset file)

  1. @Override
  2. public void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. setContentView(R.layout.sample_chooser_activity);
  5. sampleAdapter = new SampleAdapter();
  6. ExpandableListView sampleListView = findViewById(R.id.sample_list);
  7. sampleListView.setAdapter(sampleAdapter);
  8. sampleListView.setOnChildClickListener(this);
  9. Intent intent = getIntent();
  10. String dataUri = intent.getDataString();
  11. String[] uris;
  12. if (dataUri != null) {
  13. uris = new String[] {dataUri};
  14. } else {
  15. ArrayList&lt;String&gt; uriList = new ArrayList&lt;&gt;();
  16. /*--------Here reading asset json file and add to array list-------*/
  17. AssetManager assetManager = getAssets();
  18. try {
  19. for (String asset : assetManager.list(&quot;&quot;)) {
  20. if (asset.endsWith(&quot;.exolist.json&quot;)) {
  21. uriList.add(&quot;asset:///&quot; + asset);
  22. }
  23. }
  24. } catch (IOException e) {
  25. Toast.makeText(getApplicationContext(), R.string.sample_list_load_error, Toast.LENGTH_LONG)
  26. .show();
  27. }
  28. uris = new String[uriList.size()];
  29. uriList.toArray(uris);
  30. Arrays.sort(uris);
  31. }
  32. ...
  33. }

This is modified code of above, here i am using api json data and pass it to intent.

  1. @Override
  2. public void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. setContentView(R.layout.sample_chooser_activity);
  5. sampleAdapter = new SampleAdapter();
  6. ExpandableListView sampleListView = findViewById(R.id.sample_list);
  7. sampleListView.setAdapter(sampleAdapter);
  8. sampleListView.setOnChildClickListener(this);
  9. Intent intent = getIntent();
  10. String dataUri = intent.getDataString();
  11. String[] uris;
  12. if (dataUri != null) {
  13. uris = new String[] {dataUri};
  14. } else {
  15. ArrayList&lt;String&gt; uriList = new ArrayList&lt;&gt;();
  16. //Here it pass JSON data------------------
  17. urlvideo = getIntent().getStringExtra(&quot;dataVideos&quot;);
  18. Log.e(&quot;TEST&gt;&gt;&gt;&gt;&gt;&gt;&gt;&quot;, urlvideo);
  19. JSONArray jsonArray = null;
  20. try {
  21. jsonArray = new JSONArray(urlvideo);
  22. Log.e(&quot;TEST&gt;&gt;&gt;&gt;&gt;&gt;&gt; 2222&quot;, String.valueOf(jsonArray));
  23. } catch (JSONException e) {
  24. e.printStackTrace();
  25. }
  26. for (int i = 0; i &lt; jsonArray.length(); i++) {
  27. JSONObject explrObject = null;
  28. try {
  29. explrObject = jsonArray.getJSONObject(i);
  30. Log.e(&quot;TEST&gt;&gt;&gt;&gt;&gt;&gt;&gt; 3333&quot;, String.valueOf(explrObject));
  31. } catch (JSONException e) {
  32. e.printStackTrace();
  33. }
  34. uriList.add(String.valueOf(explrObject));
  35. }
  36. uris = new String[uriList.size()];
  37. uriList.toArray(uris);
  38. Arrays.sort(uris);
  39. }
  40. ...
  41. }

i am getting these error

  1. 2020-04-09 13:25:04.803 2943-3129/com.tamoffline E/SampleChooserActivity: Error loading sample list: {&quot;name&quot;:&quot;YouTube DASH&quot;,&quot;samples&quot;:[{&quot;name&quot;:&quot;Google Glass (MP4,H264)&quot;,&quot;uri&quot;:&quot;https:\/\/www.youtube.com\/api\/manifest\/dash\/id\/bf5bb2419360daf1\/source\/youtube?as=fmp4_audio_clear,fmp4_sd_hd_clear&amp;sparams=ip,ipbits,expire,source,id,as&amp;ip=0.0.0.0&amp;ipbits=0&amp;expire=19000000000&amp;signature=51AF5F39AB0CEC3E5497CD9C900EBFEAECCCB5C7.8506521BFC350652163895D4C26DEE124209AA9E&amp;key=ik0&quot;,&quot;extension&quot;:&quot;mpd&quot;},{&quot;name&quot;:&quot;Google Play (MP4,H264)&quot;,&quot;uri&quot;:&quot;https:\/\/www.youtube.com\/api\/manifest\/dash\/id\/3aa39fa2cc27967f\/source\/youtube?as=fmp4_audio_clear,fmp4_sd_hd_clear&amp;sparams=ip,ipbits,expire,source,id,as&amp;ip=0.0.0.0&amp;ipbits=0&amp;expire=19000000000&amp;signature=A2716F75795F5D2AF0E88962FFCD10DB79384F29.84308FF04844498CE6FBCE4731507882B8307798&amp;key=ik0&quot;,&quot;extension&quot;:&quot;mpd&quot;},{&quot;name&quot;:&quot;Google Glass (WebM,VP9)&quot;,&quot;uri&quot;:&quot;https:\/\/www.youtube.com\/api\/manifest\/dash\/id\/bf5bb2419360daf1\/source\/youtube?as=fmp4_audio_clear,webm2_sd_hd_clear&amp;sparams=ip,ipbits,expire,source,id,as&amp;ip=0.0.0.0&amp;ipbits=0&amp;expire=19000000000&amp;signature=249B04F79E984D7F86B4D8DB48AE6FAF41C17AB3.7B9F0EC0505E1566E59B8E488E9419F253DDF413&amp;key=ik0&quot;,&quot;extension&quot;:&quot;mpd&quot;},{&quot;name&quot;:&quot;Google Play (WebM,VP9)&quot;,&quot;uri&quot;:&quot;https:\/\/www.youtube.com\/api\/manifest\/dash\/id\/3aa39fa2cc27967f\/source\/youtube?as=fmp4_audio_clear,webm2_sd_hd_clear&amp;sparams=ip,ipbits,expire,source,id,as&amp;ip=0.0.0.0&amp;ipbits=0&amp;expire=19000000000&amp;signature=B1C2A74783AC1CC4865EB312D7DD2D48230CC9FD.BD153B9882175F1F94BFE5141A5482313EA38E8D&amp;key=ik0&quot;,&quot;extension&quot;:&quot;mpd&quot;}]}
  2. com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: Unable to connect to {&quot;name&quot;:&quot;YouTube DASH&quot;,&quot;samples&quot;:[{&quot;name&quot;:&quot;Google Glass (MP4,H264)&quot;,&quot;uri&quot;:&quot;https:\/\/www.youtube.com\/api\/manifest\/dash\/id\/bf5bb2419360daf1\/source\/youtube?as=fmp4_audio_clear,fmp4_sd_hd_clear&amp;sparams=ip,ipbits,expire,source,id,as&amp;ip=0.0.0.0&amp;ipbits=0&amp;expire=19000000000&amp;signature=51AF5F39AB0CEC3E5497CD9C900EBFEAECCCB5C7.8506521BFC350652163895D4C26DEE124209AA9E&amp;key=ik0&quot;,&quot;extension&quot;:&quot;mpd&quot;},{&quot;name&quot;:&quot;Google Play (MP4,H264)&quot;,&quot;uri&quot;:&quot;https:\/\/www.youtube.com\/api\/manifest\/dash\/id\/3aa39fa2cc27967f\/source\/youtube?as=fmp4_audio_clear,fmp4_sd_hd_clear&amp;sparams=ip,ipbits,expire,source,id,as&amp;ip=0.0.0.0&amp;ipbits=0&amp;expire=19000000000&amp;signature=A2716F75795F5D2AF0E88962FFCD10DB79384F29.84308FF04844498CE6FBCE4731507882B8307798&amp;key=ik0&quot;,&quot;extension&quot;:&quot;mpd&quot;},{&quot;name&quot;:&quot;Google Glass (WebM,VP9)&quot;,&quot;uri&quot;:&quot;https:\/\/www.youtube.com\/api\/manifest\/dash\/id\/bf5bb2419360daf1\/source\/youtube?as=fmp4_audio_clear,webm2_sd_hd_clear&amp;sparams=ip,ipbits,expire,source,id,as&amp;ip=0.0.0.0&amp;ipbits=0&amp;expire=19000000000&amp;signature=249B04F79E984D7F86B4D8DB48AE6FAF41C17AB3.7B9F0EC0505E1566E59B8E488E9419F253DDF413&amp;key=ik0&quot;,&quot;extension&quot;:&quot;mpd&quot;},{&quot;name&quot;:&quot;Google Play (WebM,VP9)&quot;,&quot;uri&quot;:&quot;https:\/\/www.youtube.com\/api\/manifest\/dash\/id\/3aa39fa2cc27967f\/source\/youtube?as=fmp4_audio_clear,webm2_sd_hd_clear&amp;sparams=ip,ipbits,expire,source,id,as&amp;ip=0.0.0.0&amp;ipbits=0&amp;expire=19000000000&amp;signature=B1C2A74783AC1CC4865EB312D7DD2D48230CC9FD.BD153B9882175F1F94BFE5141A5482313EA38E8D&amp;key=ik0&quot;,&quot;extension&quot;:&quot;mpd&quot;}]}
  3. at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:282)
  4. at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:177)
  5. at com.google.android.exoplayer2.upstream.DataSourceInputStream.checkOpened(DataSourceInputStream.java:102)
  6. at com.google.android.exoplayer2.upstream.DataSourceInputStream.read(DataSourceInputStream.java:82)
  7. at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:288)
  8. at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:351)
  9. at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:180)
  10. at java.io.InputStreamReader.read(InputStreamReader.java:184)
  11. at android.util.JsonReader.fillBuffer(JsonReader.java:742)
  12. at android.util.JsonReader.nextNonWhitespace(JsonReader.java:782)
  13. at android.util.JsonReader.nextValue(JsonReader.java:695)
  14. at android.util.JsonReader.peek(JsonReader.java:334)
  15. 2020-04-09 13:25:04.806 2943-3129/com.tamoffline E/SampleChooserActivity: at android.util.JsonReader.expect(JsonReader.java:308)
  16. at android.util.JsonReader.beginArray(JsonReader.java:277)
  17. at com.tamoffline.SampleChooserActivity$SampleListLoader.readSampleGroups(SampleChooserActivity.java:293)
  18. at com.tamoffline.SampleChooserActivity$SampleListLoader.doInBackground(SampleChooserActivity.java:276)
  19. at com.tamoffline.SampleChooserActivity$SampleListLoader.doInBackground(SampleChooserActivity.java:261)
  20. at android.os.AsyncTask$2.call(AsyncTask.java:333)
  21. at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  22. at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
  23. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
  24. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
  25. at java.lang.Thread.run(Thread.java:764)
  26. Caused by: java.net.MalformedURLException: no protocol: {&quot;name&quot;:&quot;YouTube DASH&quot;,&quot;samples&quot;:[{&quot;name&quot;:&quot;Google Glass (MP4,H264)&quot;,&quot;uri&quot;:&quot;https:\/\/www.youtube.com\/api\/manifest\/dash\/id\/bf5bb2419360daf1\/source\/youtube?as=fmp4_audio_clear,fmp4_sd_hd_clear&amp;sparams=ip,ipbits,expire,source,id,as&amp;ip=0.0.0.0&amp;ipbits=0&amp;expire=19000000000&amp;signature=51AF5F39AB0CEC3E5497CD9C900EBFEAECCCB5C7.8506521BFC350652163895D4C26DEE124209AA9E&amp;key=ik0&quot;,&quot;extension&quot;:&quot;mpd&quot;},{&quot;name&quot;:&quot;Google Play (MP4,H264)&quot;,&quot;uri&quot;:&quot;https:\/\/www.youtube.com\/api\/manifest\/dash\/id\/3aa39fa2cc27967f\/source\/youtube?as=fmp4_audio_clear,fmp4_sd_hd_clear&amp;sparams=ip,ipbits,expire,source,id,as&amp;ip=0.0.0.0&amp;ipbits=0&amp;expire=19000000000&amp;signature=A2716F75795F5D2AF0E88962FFCD10DB79384F29.84308FF04844498CE6FBCE4731507882B8307798&amp;key=ik0&quot;,&quot;extension&quot;:&quot;mpd&quot;},{&quot;name&quot;:&quot;Google Glass (WebM,VP9)&quot;,&quot;uri&quot;:&quot;https:\/\/www.youtube.com\/api\/manifest\/dash\/id\/bf5bb2419360daf1\/source\/youtube?as=fmp4_audio_clear,webm2_sd_hd_clear&amp;sparams=ip,ipbits,expire,source,id,as&amp;ip=0.0.0.0&amp;ipbits=0&amp;expire=19000000000&amp;signature=249B04F79E984D7F86B4D8DB48AE6FAF41C17AB3.7B9F0EC0505E1566E59B8E488E9419F253DDF413&amp;key=ik0&quot;,&quot;extension&quot;:&quot;mpd&quot;},{&quot;name&quot;:&quot;Google Play (WebM,VP9)&quot;,&quot;uri&quot;:&quot;https:\/\/www.youtube.com\/api\/manifest\/dash\/id\/3aa39fa2cc27967f\/source\/youtube?as=fmp4_audio_clear,webm2_sd_hd_clear&amp;sparams=ip,ipbits,expire,source,id,as&amp;ip=0.0.0.0&amp;ipbits=0&amp;expire=19000000000&amp;signature=B1C2A74783AC1CC4865EB312D7DD2D48230CC9FD.BD153B9882175F1F94BFE5141A5482313EA38E8D&amp;key=ik0&quot;,&quot;extension&quot;:&quot;mpd&quot;}]}
  27. at java.net.URL.&lt;init&gt;(URL.java:601)
  28. at java.net.URL.&lt;init&gt;(URL.java:498)
  29. at java.net.URL.&lt;init&gt;(URL.java:447)
  30. at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.makeConnection(DefaultHttpDataSource.java:429)
  31. at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:280)
  32. ... 22 more

This is the sample data i am passing in Intent.

  1. [
  2. {
  3. &quot;name&quot;: &quot;YouTube DASH&quot;,
  4. &quot;samples&quot;: [
  5. {
  6. &quot;name&quot;: &quot;Google Glass (MP4,H264)&quot;,
  7. &quot;uri&quot;: &quot;https://www.youtube.com/api/manifest/dash/id/bf5bb2419360daf1/source/youtube?as=fmp4_audio_clear,fmp4_sd_hd_clear&amp;sparams=ip,ipbits,expire,source,id,as&amp;ip=0.0.0.0&amp;ipbits=0&amp;expire=19000000000&amp;signature=51AF5F39AB0CEC3E5497CD9C900EBFEAECCCB5C7.8506521BFC350652163895D4C26DEE124209AA9E&amp;key=ik0&quot;,
  8. &quot;extension&quot;: &quot;mpd&quot;
  9. },
  10. {
  11. &quot;name&quot;: &quot;Google Play (MP4,H264)&quot;,
  12. &quot;uri&quot;: &quot;https://www.youtube.com/api/manifest/dash/id/3aa39fa2cc27967f/source/youtube?as=fmp4_audio_clear,fmp4_sd_hd_clear&amp;sparams=ip,ipbits,expire,source,id,as&amp;ip=0.0.0.0&amp;ipbits=0&amp;expire=19000000000&amp;signature=A2716F75795F5D2AF0E88962FFCD10DB79384F29.84308FF04844498CE6FBCE4731507882B8307798&amp;key=ik0&quot;,
  13. &quot;extension&quot;: &quot;mpd&quot;
  14. },
  15. {
  16. &quot;name&quot;: &quot;Google Glass (WebM,VP9)&quot;,
  17. &quot;uri&quot;: &quot;https://www.youtube.com/api/manifest/dash/id/bf5bb2419360daf1/source/youtube?as=fmp4_audio_clear,webm2_sd_hd_clear&amp;sparams=ip,ipbits,expire,source,id,as&amp;ip=0.0.0.0&amp;ipbits=0&amp;expire=19000000000&amp;signature=249B04F79E984D7F86B4D8DB48AE6FAF41C17AB3.7B9F0EC0505E1566E59B8E488E9419F253DDF413&amp;key=ik0&quot;,
  18. &quot;extension&quot;: &quot;mpd&quot;
  19. },
  20. {
  21. &quot;name&quot;: &quot;Google Play (WebM,VP9)&quot;,
  22. &quot;uri&quot;: &quot;https://www.youtube.com/api/manifest/dash/id/3aa39fa2cc27967f/source/youtube?as=fmp4_audio_clear,webm2_sd_hd_clear&amp;sparams=ip,ipbits,expire,source,id,as&amp;ip=0.0.0.0&amp;ipbits=0&amp;expire=19000000000&amp;signature=B1C2A74783AC1CC4865EB312D7DD2D48230CC9FD.BD153B9882175F1F94BFE5141A5482313EA38E8D&amp;key=ik0&quot;,
  23. &quot;extension&quot;: &quot;mpd&quot;
  24. }
  25. ]
  26. }
  27. ]

huangapple
  • 本文由 发表于 2020年4月9日 16:23:03
  • 转载请务必保留本文链接:https://java.coder-hub.com/61116864.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定