Android 连接到远程服务器时出错

Android 连接到远程服务器时出错,android,httpconnection,Android,Httpconnection,我正在尝试通过登录窗口连接到服务器。当我输入用户名和密码并单击按钮时,会显示一个错误,即应用程序已停止,下面是.java代码和logcat: package com.example.sh.mysqldemo; import android.app.AlertDialog; import android.content.Context; import android.os.AsyncTask; import java.io.BufferedReader; import java.io.Buff

我正在尝试通过登录窗口连接到服务器。当我输入用户名和密码并单击按钮时,会显示一个错误,即应用程序已停止,下面是.java代码和logcat:

package com.example.sh.mysqldemo;

import android.app.AlertDialog;
import android.content.Context;
import android.os.AsyncTask;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;

import javax.net.ssl.HttpsURLConnection;



public class BackgroundWorker extends AsyncTask <String, Void, String> {
    Context context;
    AlertDialog alertDialog;

    BackgroundWorker (Context ctx){
        context = ctx;
    }

    @Override
    protected String doInBackground(String... params) {
        String type = params[0];
        String login_url ="http://166.87.228.72/loging.php";
        if (type.equals("login")) try {
            String user_name = params[1];
            String password = params[2];
            URL url = new URL(login_url);
            HttpURLConnection httpURLConnection = (HttpsURLConnection) url.openConnection();
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setDoInput(true);
            OutputStream outputStream = httpURLConnection.getOutputStream();
            BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
            String post_data = URLEncoder.encode("user_name", "UTF-8") + "=" + URLEncoder.encode(user_name, "UTF-8") + "&"
                    + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8");
            bufferedWriter.write(post_data);
            bufferedWriter.flush();
            bufferedWriter.close();
            outputStream.close();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1"));
            String result = "";
            String line = "";
            while ((line = bufferedReader.readLine()) != null) {
                result += line;
            }
            bufferedReader.close();
            inputStream.close();
            httpURLConnection.disconnect();
            return result;


        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPreExecute() {
        alertDialog = new AlertDialog.Builder(context).create();
        alertDialog.setTitle("login Status");
    }

    @Override
    protected void onPostExecute(String result) {
        alertDialog.setMessage(result);
        alertDialog.show();
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }
}
package com.example.sh.mysqldemo;
导入android.app.AlertDialog;
导入android.content.Context;
导入android.os.AsyncTask;
导入java.io.BufferedReader;
导入java.io.BufferedWriter;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.io.OutputStream;
导入java.io.OutputStreamWriter;
导入java.net.HttpURLConnection;
导入java.net.MalformedURLException;
导入java.net.URL;
导入java.net.urlcoder;
导入javax.net.ssl.HttpsURLConnection;
公共类BackgroundWorker扩展异步任务{
语境;
警报对话框警报对话框;
BackgroundWorker(上下文ctx){
上下文=ctx;
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
字符串类型=参数[0];
字符串登录\u url=”http://166.87.228.72/loging.php";
如果(type.equals(“login”))尝试{
字符串user_name=params[1];
字符串密码=参数[2];
URL=新URL(登录\ URL);
HttpURLConnection HttpURLConnection=(HttpsURLConnection)url.openConnection();
httpURLConnection.setRequestMethod(“POST”);
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
OutputStream OutputStream=httpURLConnection.getOutputStream();
BufferedWriter BufferedWriter=新的BufferedWriter(新的OutputStreamWriter(outputStream,UTF-8));
字符串post_data=URLEncoder.encode(“用户名”,“UTF-8”)+”=“+URLEncoder.encode(用户名,“UTF-8”)+”&”
+urlcoder.encode(“密码”,“UTF-8”)+“=”+urlcoder.encode(密码,“UTF-8”);
bufferedWriter.write(post_数据);
bufferedWriter.flush();
bufferedWriter.close();
outputStream.close();
InputStream InputStream=httpURLConnection.getInputStream();
BufferedReader BufferedReader=新的BufferedReader(新的InputStreamReader(inputStream,“iso-8859-1”);
字符串结果=”;
字符串行=”;
而((line=bufferedReader.readLine())!=null){
结果+=行;
}
bufferedReader.close();
inputStream.close();
httpURLConnection.disconnect();
返回结果;
}捕获(格式错误){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPreExecute(){
alertDialog=新建alertDialog.Builder(context.create();
alertDialog.setTitle(“登录状态”);
}
@凌驾
受保护的void onPostExecute(字符串结果){
alertDialog.setMessage(结果);
alertDialog.show();
}
@凌驾
受保护的void onProgressUpdate(void…值){
super.onProgressUpdate(值);
}
}
logcat如下所示:

4-12 10:15:53.764 12350-12371/com.example.sh.mysqldemo D/NetworkSecurityConfig:未指定网络安全配置,使用 平台默认值04-12 10:15:53.776 12350-12371/com.example.sh.mysqldemo E/AndroidRuntime:FATAL 例外情况:异步任务#2 进程:com.example.sh.mysqldemo,PID:12350 java.lang.RuntimeException:执行时出错 doInBackground() 在android.os.AsyncTask$3.done处(AsyncTask.java:325) 在 java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) 位于java.util.concurrent.FutureTask.setException(FutureTask.java:223) 位于java.util.concurrent.FutureTask.run(FutureTask.java:242) 在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 运行(Thread.java:761) 原因:java.lang.ClassCastException: 无法强制转换com.android.okhttp.internal.huc.HttpURLConnectionImpl 到javax.net.ssl.HttpsURLConnection 在 com.example.sh.mysqldemo.BackgroundWorker.doInBackground(BackgroundWorker.java:41) 在 com.example.sh.mysqldemo.BackgroundWorker.doInBackground(BackgroundWorker.java:25) 位于android.os.AsyncTask$2.call(AsyncTask.java:305) 位于java.util.concurrent.FutureTask.run(FutureTask.java:237)