Соединение с https://xxx.xxx отказано

Я пытаюсь получить данные, хранящиеся в базе данных Mysql, используя php-скрипт и ответ JSON. Но когда я запускаю программу, я получаю вывод как «Не могу подключиться к базе данных».

MainActivity.java

public class MainActivity extends Activity { TextView resultView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); StrictMode.enableDefaults(); resultView = (TextView) findViewById(R.id.result); getData(); } public void getData() { String result = " "; InputStream isr = null; try { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("https://192.168.x.xx/sheetal/getdata.php"); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); isr = entity.getContent(); } catch (Exception e) { Log.e("log_tag", "Error in http connection" + e.toString()); resultView.setText("Could'nt connect to database"); } //convert response to string try { BufferedReader reader = new BufferedReader(new InputStreamReader(isr, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } isr.close(); result = sb.toString(); } catch (Exception e) { Log.e("log_tag", "Error converting result" + e.toString()); } //parse json data try { String s = ""; JSONArray jArray = new JSONArray(result); for (int i = 0; i < jArray.length(); i++) { JSONObject json = jArray.getJSONObject(i); s = s + "Name: " + json.getString("Firstname") + " " + json.getString("Lastname") + "\n" + "Age: " + json.getInt("Age") + "\n" + "Mobile Using: " + json.getString("Product") + "\n\n"; } resultView.setText(s); } catch (Exception e) { Log.e("log-teg", "Error Parsing Data" + e.toString()); } } } 

Это мой php-файл getdata.php

 <?php $con = mysql_connect("localhost", "root", ""); if (!$con) { die('Could not Connect:' . mysql_error()); } mysql_select_db("test1", $con); $result = mysql_query("SELECT * FROM customer"); while ($row = mysql_fetch_assoc($result)) $output[] = $row; print (json_encode($output)); ?> 

Ошибка log-cat

  03-11 01:53:37.569: I/Choreographer(1765): Skipped 124 frames! The application may be doing too much work on its main thread. 03-11 01:53:45.780: E/log_tag(1765): Error in http connectionjava.lang.IllegalArgumentException: Host name may not be null 03-11 01:53:45.798: E/log_tag(1765): Error converting resultjava.lang.NullPointerException: lock == null 03-11 01:53:45.798: E/log-teg(1765): Error Parsing Dataorg.json.JSONException: End of input at character 1 of 03-11 01:53:45.968: I/Choreographer(1765): Skipped 120 frames! The application may be doing too much work on its main thread. 03-11 01:53:46.298: I/Choreographer(1765): Skipped 45 frames! The application may be doing too much work on its main thread. 

Это проблема с вызовом DefaultHttpClient() ,

Когда вы используете Https, вам нужно использовать HttpClient, как показано ниже,

создайте отдельный метод, как показано ниже,

 private DefaultHttpClient getHttpClient() { SchemeRegistry schemeRegistry = new SchemeRegistry(); schemeRegistry.register(new Scheme("https", SSLSocketFactory .getSocketFactory(), 443)); HttpParams params = new BasicHttpParams(); int timeoutConnection = 30000; HttpConnectionParams.setConnectionTimeout(params, timeoutConnection); int timeoutSocket = 30000; HttpConnectionParams.setSoTimeout(params, timeoutSocket); params.setParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS, 30); params.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE, new ConnPerRouteBean()); params.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, false); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager( params, schemeRegistry); DefaultHttpClient client = new DefaultHttpClient(cm, params); client.setRoutePlanner(new DefaultHttpRoutePlanner(schemeRegistry)); return (client); } 

Добавьте этот метод в свой код и измените строку ниже,

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

К этому,

 HttpClient httpclient = getHttpClient(); 

Вы пытаетесь выполнить сетевое подключение (тяжелый процесс) в основном потоке, переместите сетевой код в другой поток или используйте задачу Async для Android.

  String myurl=" "; URL url = new URL(myurl); Log.e(myurl, "Url Executing"); URLConnection conexion = url.openConnection(); conexion.setConnectTimeout(100); int lenghtOfFile = conexion.getContentLength(); InputStream input = new BufferedInputStream(url.openStream()); 

использовать AsyncTask очень просто

  String urls = "http://euroinvo.co.in/gkdb/gkdb"; new DownloadDb().execute(urls); class DownloadDb extends AsyncTask<String, String, String> { @Override protected String doInBackground(String... aurl) { int count; String fullpath = ""; try { URL url = new URL(aurl[0]); Log.e(aurl[0], "Url Executing"); URLConnection conexion = url.openConnection(); conexion.setConnectTimeout(100); // conexion.connect(); int lenghtOfFile = conexion.getContentLength(); Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile); // Get directory InputStream input = new BufferedInputStream(url.openStream()); BufferedReader reader = new BufferedReader(new InputStreamReader(input,"iso-8859-1"),8); StringBuilder sb = new StringBuilder(); String line = null; while((line = reader.readLine())!= null){ sb.append(line + "\n"); } isr.close(); result=sb.toString(); } catch (Exception e) { Log.d("error", e.getMessage()); } return fullpath; } 

У вашего основного протектора больше действий. там для вас можно использовать asynctask для этого. это более простой способ сделать это.

Это руководство для асинтезы

AsyncTask

Или вы можете проверить это без асинтезы

Android-PHP-JSON-учебник