Autore Topic: problema con accesso rete  (Letto 897 volte)

Offline algol

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
problema con accesso rete
« il: 18 Agosto 2011, 15:51:56 CEST »
0
devo fare una semplice applicazione che pesca dei dati da una pagina php che restituisce dei valori sotto forma di json, l'applicazione son riuscità a farla (scopiazzando qua e la) quello che ora non riesco a risolvere è che se il dispositivo per qualsiasi motivo non ha accesso alla rete l'applicazione crasha

questa la main

Codice (Java): [Seleziona]
public class Main extends ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listplaceholder);
       
        ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
     
        JSONObject json = JSONfunctions.getJSONfromURL("http://pippo/serv/index.php");

       
        try{
               
                JSONArray  earthquakes = json.getJSONArray("fatturato");
               
                for(int i=0;i<earthquakes.length();i++){                                               
                                HashMap<String, String> map = new HashMap<String, String>();   
                                JSONObject e = earthquakes.getJSONObject(i);
                               
                                map.put("id",  String.valueOf(i));
                        map.put("name", "Cliente: " + e.getString("cod_cli") + " " + e.getString("rag_soc"));
                        map.put("magnitude", "Fatturato: " +  e.getString("fat"));
                        map.put("prova", "Agente: " +  e.getString("des_age"));
                        mylist.add(map);                       
                        }              
        }catch(JSONException e)        {
                 Log.e("log_tag", "Error parsing data "+e.toString());
        }
       
        ListAdapter adapter = new SimpleAdapter(this, mylist , R.layout.main,
                        new String[] { "name", "magnitude", "prova" },
                        new int[] { R.id.item_title, R.id.item_subtitle, R.id.item_subsubtitle });
       
        setListAdapter(adapter);
       
        final ListView lv = getListView();
        lv.setTextFilterEnabled(true); 
        lv.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                     
                        @SuppressWarnings("unchecked")
                                HashMap<String, String> o = (HashMap<String, String>) lv.getItemAtPosition(position);                          
                        Toast.makeText(Main.this, "ID '" + o.get("id") + "' was clicked.", Toast.LENGTH_SHORT).show();

                        }
                });
    }
}

questo il log

Codice: [Seleziona]
08-18 15:41:06.420: ERROR/log_tag(11646): Error in http connection org.apache.http.conn.HttpHostConnectException: Connection to http://pippo refused
08-18 15:41:06.420: ERROR/log_tag(11646): Error converting result java.lang.NullPointerException
08-18 15:41:06.420: ERROR/log_tag(11646): Error parsing data org.json.JSONException: End of input at character 0 of
08-18 15:41:06.420: ERROR/AndroidRuntime(11646): FATAL EXCEPTION: main
08-18 15:41:06.420: ERROR/AndroidRuntime(11646): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pxr.tutorial.xmltest/com.pxr.tutorial.json.Main}: java.lang.NullPointerException
08-18 15:41:06.420: ERROR/AndroidRuntime(11646):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1736)
08-18 15:41:06.420: ERROR/AndroidRuntime(11646):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1752)
08-18 15:41:06.420: ERROR/AndroidRuntime(11646):     at android.app.ActivityThread.access$1500(ActivityThread.java:123)
08-18 15:41:06.420: ERROR/AndroidRuntime(11646):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:993)
08-18 15:41:06.420: ERROR/AndroidRuntime(11646):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-18 15:41:06.420: ERROR/AndroidRuntime(11646):     at android.os.Looper.loop(Looper.java:126)
08-18 15:41:06.420: ERROR/AndroidRuntime(11646):     at android.app.ActivityThread.main(ActivityThread.java:3998)
08-18 15:41:06.420: ERROR/AndroidRuntime(11646):     at java.lang.reflect.Method.invokeNative(Native Method)
08-18 15:41:06.420: ERROR/AndroidRuntime(11646):     at java.lang.reflect.Method.invoke(Method.java:491)
08-18 15:41:06.420: ERROR/AndroidRuntime(11646):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
08-18 15:41:06.420: ERROR/AndroidRuntime(11646):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
08-18 15:41:06.420: ERROR/AndroidRuntime(11646):     at dalvik.system.NativeStart.main(Native Method)
08-18 15:41:06.420: ERROR/AndroidRuntime(11646): Caused by: java.lang.NullPointerException
08-18 15:41:06.420: ERROR/AndroidRuntime(11646):     at com.pxr.tutorial.json.Main.onCreate(Main.java:41)
08-18 15:41:06.420: ERROR/AndroidRuntime(11646):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
08-18 15:41:06.420: ERROR/AndroidRuntime(11646):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1700)
08-18 15:41:06.420: ERROR/AndroidRuntime(11646):     ... 11 more


Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:problema con accesso rete
« Risposta #1 il: 18 Agosto 2011, 23:38:34 CEST »
0
Credo che il problema sia qui:

Codice (Java): [Seleziona]
       
        try{
               
                JSONArray  earthquakes = json.getJSONArray("fatturato");
               
              (...)
        }

E cambierei in:
Codice (Java): [Seleziona]
        JSONArray  earthquakes = json.getJSONArray("fatturato");
       if (earthquakes!=null){
            try{
                  (...)
            }
       } else {
       // Messaggio d'errore
       }
;-)

Offline algol

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
Re:problema con accesso rete
« Risposta #2 il: 19 Agosto 2011, 09:59:16 CEST »
0
ho provato a far questo:

Codice (Java): [Seleziona]
        JSONArray earthquakes = null;
                try {
                        earthquakes = json.getJSONArray("fatturato");
                } catch (JSONException e1) {
                        e1.printStackTrace();
                }

                if (earthquakes!=null){
        try{   

ma niente, uff davvero rognosa sta cosa

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:problema con accesso rete
« Risposta #3 il: 19 Agosto 2011, 10:05:40 CEST »
0
Mi sa che ieri ho fatto confusione.   Fa' il nullcheck sul json, non sull'earthquakes.  :-[
Codice (Java): [Seleziona]
 
       if (json!=null){
            try{
 JSONArray  earthquakes = json.getJSONArray("fatturato");
                  (...)
            }
       } else {
       // Messaggio d'errore
       }