-2

I've been stuck reading this json file in this URL. I've tried a lot of example in the net but it cannot read this specific json file in this URL

[https://203.177.52.163:1985/restgateway/services/ws_download/Book/3372/Plant/03/User/12334]. Please help me what is wrong with this. Thank you for your help.

//THis is my code sample..



        package com.hmkcode.android;

        import java.io.BufferedReader;
        import java.io.IOException;
        import java.io.InputStream;
        import java.io.InputStreamReader;
        import org.apache.http.HttpResponse;
        import org.apache.http.client.HttpClient;
        import org.apache.http.client.methods.HttpGet;
        import org.apache.http.impl.client.DefaultHttpClient;
        import android.net.ConnectivityManager;
        import android.net.NetworkInfo;
        import android.os.AsyncTask;
        import android.os.Bundle;
        import android.util.Log;
        import android.widget.EditText;
        import android.widget.TextView;
        import android.widget.Toast;
        import android.app.Activity;

        public class MainActivity extends Activity {

            EditText etResponse;
            TextView tvIsConnected;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // get reference to the views
        etResponse = (EditText) findViewById(R.id.etResponse);
        tvIsConnected = (TextView) findViewById(R.id.tvIsConnected);

        // check if you are connected or not
        if(isConnected()){
            tvIsConnected.setBackgroundColor(0xFF00CC00);
            tvIsConnected.setText("You are conncted");
        }
        else{
            tvIsConnected.setText("You are NOT conncted");
        }

        // call AsynTask to perform network operation on separate thread
        //new HttpAsyncTask().execute("http://hmkcode.appspot.com/rest/controller  /get.json");
      new HttpAsyncTask().execute("https://203.177.52.163:1985/restgateway/services/ws_download/Book/3372/Plant/03/User/12334");

    }

       public static String GET(String url){
        InputStream inputStream = null;
        String result = "";
        try {

            // create HttpClient
            HttpClient httpclient = new DefaultHttpClient();

            // make GET request to the given URL
            HttpResponse httpResponse = httpclient.execute(new HttpGet(url));

            // receive response as inputStream
            inputStream = httpResponse.getEntity().getContent();

            // convert inputstream to string
            if(inputStream != null)
                result = convertInputStreamToString(inputStream);
            else
                result = "Did not work!";

        } catch (Exception e) {
            Log.d("InputStream", e.getLocalizedMessage());
        }

        return result;
    }

     private static String convertInputStreamToString(InputStream inputStream) throws IOException{
        BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(inputStream));
        String line = "";
        String result = "";
        while((line = bufferedReader.readLine()) != null)
            result += line;

        inputStream.close();
        return result;

    }

    public boolean isConnected(){
        ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Activity.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
            if (networkInfo != null && networkInfo.isConnected())
                return true;
            else
                return false;  
    }
    private class HttpAsyncTask extends AsyncTask {
        @Override
        protected String doInBackground(String... urls) {

            return GET(urls[0]);
        }
        // onPostExecute displays the results of the AsyncTask.
        @Override
        protected void onPostExecute(String result) {enter code here
            Toast.makeText(getBaseContext(), "Received!", Toast.LENGTH_LONG).show();
            etResponse.setText(result);
          }
       }
    }

This is my activity_main.XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

   <TextView
        android:id="@+id/tvIsConnected"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"    
        android:background="#FF0000"
        android:textColor="#FFF"
        android:textSize="18dp"
        android:layout_marginBottom="5dp"
        android:text="is connected? " />

    <EditText
        android:id="@+id/etResponse"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:ems="10"
        android:layout_marginTop="10dp"
        android:inputType="textMultiLine" >\
        <requestFocus />
    </EditText>
</LinearLayout>

This code is ok using this URL

new HttpAsyncTask().execute("http://hmkcode.appspot.com/rest/controller  /get.json");

but if I will change it to this url

new HttpAsyncTask().execute("https://203.177.52.163:1985/restgateway/services/ws_download/Book/3372/Plant/03/User/12334");

Guys, I would like to know if this is a server issue? or it is just an error with this code. Thanks in advance.

1 Answers1

1

My guess is that your trying to connect to a self signed HTTPS website. That means your certificate is not "correct" (certified by a well known company). Thus android may block this request saying something like "SSL peer certificate incorect" or whatever.

If my guess is correct I would redirect you to this question: Self-signed certificate and loopj for Android and the accepted answer which seems very correct to me.

try that and tell me if it help !

Community
  • 1
  • 1
tanou
  • 1,083
  • 2
  • 13
  • 33