0

JSONArray を読み取るコードを記述しようとしていますが、インターネット サーバーがダウンしており、デバイスが接続できないか、デバイスにインターネット接続がない可能性があります。

例外キャッチ ブロックの return ステートメントが機能していないように見えるため、ユーザーに適切に応答するにはどうすればよいですか。

これが私のコードです。

public JSONArray getJSONFromUrl(String url) {

    JSONArray jArray = null;

    // Making HTTP request
    try {
        // defaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);

        HttpResponse httpResponse = httpClient.execute(httpPost);
        if(httpResponse.getStatusLine().getStatusCode() == 200){
            // Connection was established. Get the content. 
            HttpEntity httpEntity = httpResponse.getEntity();

            // A Simple JSON Response Read
            istream = httpEntity.getContent();
        } else {
            throw new RuntimeException("Failed : HTTP error code : "
                   + httpResponse.getStatusLine().getStatusCode());
        }

        if(BuildConfig.DEBUG){
            Log.d(Constants.LOG, "httpEntity : ");
        }

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
        return;
    } catch (ClientProtocolException e) {
        e.printStackTrace();
        return;
    } catch (IOException e) {
        e.printStackTrace();
        return;
    }
4

3 に答える 3

0

あなたが持っている場合、キャッチはどのように機能しますか

throw new RuntimeException("Failed : HTTP error code : "
               + httpResponse.getStatusLine().getStatusCode());

コードが OS にスローするように指示する場合、スローする場合、ここで他に何が期待できますか?

于 2013-05-24T00:37:16.597 に答える
0

これが私がそれを行う方法です:

    ConnectivityManager cm = (ConnectivityManager)this.getSystemService(CONNECTIVITY_SERVICE);
    NetworkInfo ni =cm.getActiveNetworkInfo(); 
        if(ni==null){
final Dialog dialog = new Dialog(MainActivity.this);
            dialog.setContentView(R.layout.dialog);
            dialog.setTitle("No Internet Connection");
            dialog.show();
            dialog.setCancelable(false);
            Button settings = (Button) dialog.findViewById(R.id.settings);
            Button exit = (Button) dialog.findViewById(R.id.exitApp);
            Button retry = (Button) dialog.findViewById(R.id.retry);
            settings.setOnClickListener(new OnClickListener(){

                @Override
                public void onClick(View arg0) {
                    startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));
                }

            });
            exit.setOnClickListener(new OnClickListener(){

                @Override
                public void onClick(View arg0) {
                dialog.cancel();    
                MainActivity.this.finish();
                }

            });
            retry.setOnClickListener(new OnClickListener(){

                @Override
                public void onClick(View arg0) {
                dialog.cancel();    
                MainActivity.this.finish();
                Intent newActivity = new Intent(getApplicationContext(), MainActivity.class);
                startActivity(newActivity);
                }

            });
于 2013-05-24T00:28:20.580 に答える