首页 > 解决方案 > 将表单数据发布到服务器(Android)

问题描述

我需要将我的注册表单详细信息提交到服务器 api。我尝试了一种方法,方法是在单击按钮时调用函数。但是服务器中没有发布任何内容。我需要将数据发布为 Content-type:Form-Data,因为服务器不响应其他任何内容。请帮帮我,谢谢!!

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

        String userName;
        String password;

        public Login(String user, String pass) {
           userName = user;
            password = pass;
        }

        protected void onPreExecute() {
            super.onPreExecute();

        }



        protected Void doInBackground(String... params) {
            OkHttpClient client = new OkHttpClient();
                RequestBody formBody = new FormBody.Builder()
                        
                        .addEncoded("user",userName)
                        .addEncoded("pass",password)
                        .build();

            Request request = new Request.Builder()
                    .url("http://www.autotrack.rs/android_juzna_backa/login.php")
                    .post(formBody)
                    .build();

            try {
                Call call = client.newCall(request);
                Response response = call.execute();
                System.out.println(response.body().string());

            }catch (Exception m)
            {
                m.printStackTrace();
            }
            Response response = null;
            try {
                response = client.newCall(request).execute();
                System.out.println(response.body().string());

            } catch (IOException e) {
                e.printStackTrace();
            }
            if(!response.isSuccessful())
            {
                try {
                    throw new IOException("Unexpected: "+response);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return null;
            }

标签: javaandroid

解决方案


您忘记添加setType方法并使用addFormDataPart

RequestBody requestBody = new MultipartBody.Builder()
        .setType(MultipartBody.FORM)
        .addFormDataPart("somParam", "someValue")
        .build()

Request request = new Request.Builder()
                    .url("http://www.autotrack.rs/android_juzna_backa/login.php")
                    .post(formBody)
                    .build();

推荐阅读