Java 连接到https://xxx.x.x.x 拒绝

Java 连接到https://xxx.x.x.x 拒绝,java,php,android,mysql,Java,Php,Android,Mysql,我试图使用php脚本和JSON响应检索存储在Mysql数据库中的数据。但是当我运行程序时,我得到了无法连接到数据库的输出 MainActivity.java public class MainActivity extends Activity { TextView resultView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

我试图使用php脚本和JSON响应检索存储在Mysql数据库中的数据。但是当我运行程序时,我得到了无法连接到数据库的输出

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());
    }
   }
}

使用异步任务非常简单

  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; 
      }
stringurl=”http://euroinvo.co.in/gkdb/gkdb";
新建DownloadDb().execute(URL);
类DownloadDb扩展异步任务{
@凌驾
受保护的字符串背景(字符串…aurl){
整数计数;
字符串fullpath=“”;
试一试{
URL=新URL(aurl[0]);
Log.e(aurl[0],“Url正在执行”);
URLConnection conexion=url.openConnection();
conexion.setConnectTimeout(100);
//conexion.connect();
int lenghtOfFile=conexion.getContentLength();
Log.d(“ANDRO_ASYNC”,“文件长度:“+lenghtOfFile”);
//获取目录
InputStream输入=新的BufferedInputStream(url.openStream());
BufferedReader读取器=新的BufferedReader(新的
InputStreamReader(输入,“iso-8859-1”),8);
StringBuilder sb=新的StringBuilder();
字符串行=null;
而((line=reader.readLine())!=null){
sb.追加(第+行“\n”);
}
isr.close();
结果=sb.toString();
}捕获(例外e){
Log.d(“错误”,例如getMessage());
}
返回全路径;
}

调用
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();

您的主线程有更多的操作。您可以使用asynctask来完成此操作。这是一种更简单的方法

这是异步任务的guid

或者,您可以在不执行asynctask的情况下检查此项


您是在Emulator上还是在真实设备上进行尝试?我在Emulator上进行尝试。您可以使用AsyncTask进行此操作。这是一种合适的开发方式。PS:您应该在AsyncTask中进行网络操作发布整个日志,这样只有我们才能确定问题。我认为您的url是错误的。请检查完整的url。检查url中的x值().
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();