2014-12-12 3 views
0

Я делаю деятельность в android, которая извлекает JSON-файл с заданного URL-адреса. Затем файл JSON предоставит URL-адрес видео и миниатюру изображения, которые будут отображаться в действии.Не удалось получить данные json с сервера в приложении android

Но я не могу получить JSON из жестко заданного URL-адреса, который я перехожу в класс GetData. Тип - GET. Infact, я даже не могу запустить его, действие вылетает из приложения. Пожалуйста, скажите мне, в чем проблема в коде.

P.S. Я включил разрешения Интернета.

public class GetData extends AsyncTask<String, Void, Boolean>{ 

    protected Boolean doInBackground(String... url) { 

     try { 

     HttpGet httpRequest = null; 
     httpRequest = new HttpGet(url.toURI()); 

     HttpClient httpclient = new DefaultHttpClient(); 
     HttpResponse response = (HttpResponse) httpclient.execute(httpRequest); 

     HttpEntity entity = response.getEntity(); 
     BufferedHttpEntity b_entity = new BufferedHttpEntity(entity); 
     String input = b_entity.getContent().toString(); 


     JSONObject jobj1 = new JSONObject(input).getJSONObject("thumb"); 
     JSONObject jobj2 = new JSONObject(input).getJSONObject("video"); 
     url_thmb=jobj1.getString("thumb"); 
     url_vdo=jobj2.getString("video"); 

    }catch(JSONException e){ 
      Log.e("EX", e.toString()); 
    }catch (URISyntaxException e){ 
      e.printStackTrace(); 
    }catch (MalformedURLException e){ 
      Log.e("log", "bad url"); 
    }catch (IOException e) { 
      Log.e("log", "io error"); 
    } 
     return null; 
    } 

LogCat говорит:

12-12 14:23:15.050: D/dalvikvm(23233): Late-enabling CheckJNI 
12-12 14:23:15.170: I/dalvikvm(23233): Could not find method android.view.ViewGroup.onNestedScrollAccepted, referenced from method android.support.v7.internal.widget.ActionBarOverlayLayout.onNestedScrollAccepted 
12-12 14:23:15.170: W/dalvikvm(23233): VFY: unable to resolve virtual method 11338: Landroid/view/ViewGroup;.onNestedScrollAccepted (Landroid/view/View;Landroid/view/View;I)V 
12-12 14:23:15.170: D/dalvikvm(23233): VFY: replacing opcode 0x6f at 0x0000 
12-12 14:23:15.170: I/dalvikvm(23233): Could not find method android.view.ViewGroup.onStopNestedScroll, referenced from method android.support.v7.internal.widget.ActionBarOverlayLayout.onStopNestedScroll 
12-12 14:23:15.170: W/dalvikvm(23233): VFY: unable to resolve virtual method 11344: Landroid/view/ViewGroup;.onStopNestedScroll (Landroid/view/View;)V 
12-12 14:23:15.170: D/dalvikvm(23233): VFY: replacing opcode 0x6f at 0x0000 
12-12 14:23:15.170: I/dalvikvm(23233): Could not find method android.support.v7.internal.widget.ActionBarOverlayLayout.stopNestedScroll, referenced from method android.support.v7.internal.widget.ActionBarOverlayLayout.setHideOnContentScrollEnabled 
12-12 14:23:15.170: W/dalvikvm(23233): VFY: unable to resolve virtual method 9032: Landroid/support/v7/internal/widget/ActionBarOverlayLayout;.stopNestedScroll()V 
12-12 14:23:15.170: D/dalvikvm(23233): VFY: replacing opcode 0x6e at 0x000e 
12-12 14:23:15.190: I/dalvikvm(23233): Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.internal.widget.TintTypedArray.getChangingConfigurations 
12-12 14:23:15.190: W/dalvikvm(23233): VFY: unable to resolve virtual method 364: Landroid/content/res/TypedArray;.getChangingConfigurations()I 
12-12 14:23:15.190: D/dalvikvm(23233): VFY: replacing opcode 0x6e at 0x0002 
12-12 14:23:15.190: I/dalvikvm(23233): Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.internal.widget.TintTypedArray.getType 
12-12 14:23:15.190: W/dalvikvm(23233): VFY: unable to resolve virtual method 386: Landroid/content/res/TypedArray;.getType (I)I 
12-12 14:23:15.190: D/dalvikvm(23233): VFY: replacing opcode 0x6e at 0x0002 
12-12 14:23:15.271: D/AndroidRuntime(23233): Shutting down VM 
12-12 14:23:15.271: W/dalvikvm(23233): threadid=1: thread exiting with uncaught exception (group=0x41635d88) 
12-12 14:23:15.271: E/AndroidRuntime(23233): FATAL EXCEPTION: main 
12-12 14:23:15.271: E/AndroidRuntime(23233): Process: com.example.streamer, PID: 23233 
12-12 14:23:15.271: E/AndroidRuntime(23233): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.streamer/com.example.streamer.MainActivityStream}: java.lang.NullPointerException 
12-12 14:23:15.271: E/AndroidRuntime(23233): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2237) 
12-12 14:23:15.271: E/AndroidRuntime(23233): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2286) 
12-12 14:23:15.271: E/AndroidRuntime(23233): at android.app.ActivityThread.access$800(ActivityThread.java:144) 
12-12 14:23:15.271: E/AndroidRuntime(23233): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246) 
12-12 14:23:15.271: E/AndroidRuntime(23233): at android.os.Handler.dispatchMessage(Handler.java:102) 
12-12 14:23:15.271: E/AndroidRuntime(23233): at android.os.Looper.loop(Looper.java:212) 
12-12 14:23:15.271: E/AndroidRuntime(23233): at android.app.ActivityThread.main(ActivityThread.java:5135) 
12-12 14:23:15.271: E/AndroidRuntime(23233): at java.lang.reflect.Method.invokeNative(Native Method) 
12-12 14:23:15.271: E/AndroidRuntime(23233): at java.lang.reflect.Method.invoke(Method.java:515) 
12-12 14:23:15.271: E/AndroidRuntime(23233): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878) 
12-12 14:23:15.271: E/AndroidRuntime(23233): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
12-12 14:23:15.271: E/AndroidRuntime(23233): at dalvik.system.NativeStart.main(Native Method) 
12-12 14:23:15.271: E/AndroidRuntime(23233): Caused by: java.lang.NullPointerException 
12-12 14:23:15.271: E/AndroidRuntime(23233): at com.example.streamer.MainActivityStream.onCreate(MainActivityStream.java:64) 
12-12 14:23:15.271: E/AndroidRuntime(23233): at android.app.Activity.performCreate(Activity.java:5231) 
12-12 14:23:15.271: E/AndroidRuntime(23233): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
12-12 14:23:15.271: E/AndroidRuntime(23233): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2201) 
12-12 14:23:15.271: E/AndroidRuntime(23233): ... 11 more 
12-12 14:23:21.817: E/EX(23233): org.json.JSONException: Value [email protected] of type java.lang.String cannot be converted to JSONObject 
+0

Вы можете поделиться своим LogCat и адресом, который вы пытаетесь найти –

+1

Можете ли вы также сообщить данные об ошибке logcat – Shiv

+0

Опубликовать ошибку logcat –

ответ

0

Просто модифицирована выше кода (тот заданный в вопросе) путем разбора JSON в mainActivity, а не делать это в фоновом режиме, и он работал на меня.

В mainActivity добавить:

GetData getData=new GetData(); 
    getData.execute(); 
    String result = null; 

    try{ 
     result = getData.get().toString(); 
    }catch(Exception e){} 

    try{ 
     JSONObject jobj1 = new JSONObject(result); 
     str=jobj1.getString("thumb").toString(); 
     str1=jobj1.getString("video").toString(); 
    }catch(JSONException e){ 
      Log.d("EX", e.toString()); 
    }` 

и удалить JSON разборе из GetData, который раньше я делал в фоновом режиме.

0

Попробуйте это.

// Create new Socket 
HttpClient client = new DefaultHttpClient(); 
HttpGet httpGet = new HttpGet(url); 
HttpResponse response = client.execute(httpGet); 
HttpEntity entity = response.getEntity(); 
// Start streaming 
InputStream is = entity.getContent(); 
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8"), 8); 
// Initialize Line 
String line = null; 
// Start reading 
while ((line = reader.readLine()) != null) 
{ 
    JSONObject reader = new JSONObject(line); 
    url_thmb = reader.getString("thumb"); 
    url_vdo = reader.getString("video"); 
} 

EDIT:

Это не возможно, потому что я просто запустить этот код и выход ниже. Проверьте свой Json-файл или ваш код.

Выход:

12-12 18:27:41.433: I/Choreographer(12476): Skipped 58 frames! The application may be doing too much work on its main thread. 
12-12 18:27:48.300: I/System.out(12476): URL_TMB = 01 URL_VDO = 001 
12-12 18:27:52.355: I/System.out(12476): URL_TMB = 02 URL_VDO = 002 
12-12 18:27:53.472: I/System.out(12476): URL_TMB = 03 URL_VDO = 003 
12-12 18:27:54.394: I/System.out(12476): URL_TMB = 04 URL_VDO = 004 
12-12 18:27:55.394: I/System.out(12476): URL_TMB = 05 URL_VDO = 005 
12-12 18:27:56.324: I/System.out(12476): URL_TMB = 06 URL_VDO = 006 
12-12 18:27:59.371: I/System.out(12476): URL_TMB = 07 URL_VDO = 007 
12-12 18:28:00.316: I/System.out(12476): URL_TMB = 08 URL_VDO = 008 
12-12 18:28:01.269: I/System.out(12476): URL_TMB = 09 URL_VDO = 009 
12-12 18:28:11.105: W/jdwp(12476): Debugger is telling the VM to exit with code=1 
12-12 18:28:11.105: I/dalvikvm(12476): GC lifetime allocation: 7948 bytes 

EDIT 2: Это еще один тест на выход. (Я должен изменить хуг к примеру, потому что тест SOF редактор не позволит мне использовать его.)

12-13 02:14:45.711: I/System.out(18424): url_thmb = http://example.com/intern/ajnk/thumb.jpg url_vdo = http://example.com/intern/ajnk/vid.mp4 
12-13 02:14:46.610: D/lights(273): set_light_backlight: brightness=20 
12-13 02:14:49.640: I/ActivityManager(273): Start proc com.sonyericsson.appshare for service com.sonyericsson.appshare/.backend.synchronization.SyncService: pid=18529 uid=10024 gids={3003, 1015} 
12-13 02:14:49.750: D/dalvikvm(17648): GC_EXPLICIT freed 319K, 50% free 3396K/6791K, external 1685K/2133K, paused 111ms 
+0

не работает ...! – Ajinkya

+0

Повторите мой ответ. Я добавил пример вывода –

+0

, возможно, что я не получаю json-файл правильно. – Ajinkya

0

ошибка означает, что вы не получаете любой JSON, то я предлагаю вам войти ваши данные.

String input = b_entity.getContent().toString(); 
Log.d("log_tag", "input = " + input.toString()); 
JSONObject jobj1 = new JSONObject(input); 
Log.d("log_tag", "json = " + jobj1.toString()); 
+0

позвольте мне попробовать и посмотреть. – Ajinkya

+0

@Ajinkya Я сделал редактирование – meda

+0

, он не показывает никакой записи в logcat этим тегом. Кажется, есть ошибка в сумме до этой строки – Ajinkya