java - Android - 通过 POST 方法轻松发送 HTTP 参数

标签 java php android

    package demo.com.mysqldbdemo;

import android.content.Context;
import android.os.AsyncTask;
import android.widget.Toast;

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

import javax.net.ssl.HttpsURLConnection;

/**
 * Created by Ahmadzai on 7/10/2017.
 */

public class BackgroundTask extends AsyncTask<String, Void, String> {

    Context ctx;
    BackgroundTask(Context ctx)
    {
        this.ctx = ctx;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected String doInBackground(String... params) {
        String reg_url = "http://192.168.8.100:8081/webapp/register.php";
        String login_url = "http://localhost/webapp/login.php";
        String method = params[0];
        if (method.equals("register"))
        {
            String name = params[1];
            String user_name = params[2];
            String user_pass = params[3];

            try {
                URL url = new URL(reg_url);
                HttpsURLConnection httpsURLConnection = (HttpsURLConnection) url.openConnection();
                httpsURLConnection.setRequestMethod("POST");
                httpsURLConnection.setDoOutput(true);
                OutputStream OS = httpsURLConnection.getOutputStream();
                BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(OS,"UTF-8"));
                String data = URLEncoder.encode("user","UTF-8") + "=" +URLEncoder.encode(name,"UTF-8")+"&"+
                        URLEncoder.encode("user_name","UTF-8") + "=" +URLEncoder.encode(user_name,"UTF-8")+"&"+
                        URLEncoder.encode("user_pass","UTF-8") + "=" +URLEncoder.encode(user_pass,"UTF-8");
                bufferedWriter.write(data);
                bufferedWriter.flush();
                bufferedWriter.close();
                OS.close();

                InputStream IS = httpsURLConnection.getInputStream();
                IS.close();
                return "Registration succeed ....";

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

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }

    @Override
    protected void onPostExecute(String result) {
        Toast.makeText(ctx,result,Toast.LENGTH_LONG).show();
    }
}

我想将数据插入到mysql表中,因为这段代码没有任何错误,但是当我按下界面中的注册按钮时,当我想调试它运行的应用程序时,应用程序停止运行,直到“HttpsURLConnection httpsURLConnection = (HttpsURLConnection ) url.openConnection();"在此之后的代码行将停止调试。 任何人都可以在这方面帮助我吗?我一直在使用 stackoverflow 答案,但这是我第一次尝试提问,对于给您带来的不便,我们深表歉意。

最佳答案

开始使用retrofit最适合安卓

关于java - Android - 通过 POST 方法轻松发送 HTTP 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45013527/

相关文章:

java - spring-如果使用注解需要在xml中指定bean吗

java - 泛型类型作为抽象方法的参数?

php - 使用 jQuery 或 Javascript 查找下拉选项值

android - 如何下载 code.google.com 的源代码

java - Android EditText回车键监听器

java - 使用 AccountManager 通过 Google API 进行身份验证

java - Energy Converter 应用程序无法工作,问题可能出在 getValues 方法中

php - Yii2:配置参数与 const/define

php - 我如何根据用户日期获取数据

android - fragment TabLayout/GridView OutMemory