android 与javaweb (servlet)后台实现通信

android 需要的依赖:在build.gradle中导入okhttp3

implementation 'com.squareup.okhttp3:okhttp:4.2.0'

 要实现通信首先就得获得网络授权:在AndroidMainfest.xml添加网络授权:

<uses-permission android:name="android.permission.INTERNET"/>

在页面的布局页面,创建一个button,

 

两个Editext控件,分别用于存放账号和密码

 

public class UserLogin extends AppCompatActivity {

    private EditText edText01;
    private EditText edText02;

    UserInfo usr =new UserInfo();
    private String e_mail;
    private String password;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_user_login);

        edText01 = findViewById(R.id.name);//存放账号的控件
        edText02 = findViewById(R.id.password);//存放密码的控件

    }
    /**
     * 注册事件
     * */
    public void btn_create(View view)
    {
        Intent intent=new Intent(UserLogin.this,CreateUser.class);
        startActivity(intent);
    }

    /**
     * 点击事件,在main_activity.xml中有设置android:onclick="btn_login"点击事件
     */
    public void btn_login(View view) {
        e_mail = edText01.getText().toString();//获取输入的账号
        password = edText02.getText().toString();//获取输入的密码
/**
开启线程
*/
        MyThread myThread = new MyThread();
        new Thread(myThread).start();

    }

    /**
     * 用runnnale方法实现一个线程
     * */
    public class MyThread implements Runnable
    {
        /**
         * 使用okttp3提供的requestBody 存入数据
         * */
        RequestBody body = new FormBody.Builder()
                .add("e_mail",e_mail)
                .add("password",password)
                .build();
        @Override
        public void run() {
                try {
                    OkHttpClient client = new OkHttpClient();
                    Request request = new Request.Builder()
                            .url("")//填入你后台的地址http://
                            .post(body)//把body  post出去
                            .build();
                    Response response =client.newCall(request).execute();
                    String data =response.body().string();//服务区返回的数据
                    Log.i("服务器返回的值",data);//打印数据
                }catch (Exception e)
                {
                    e.printStackTrace();
                }

            /**
             * 用runOnUiThread刷新页面
             * */


        }
    }

javaweb  后台(我用的事servlet当后台)

首先你得导入servlet的jar包(servlet-api.jar),然后新建一个servlet,写上我的doPost里面的代码

/**
 * Servlet implementation class UserLogin
 */
@WebServlet("/user-login.action")
public class UserLogin extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public UserLogin() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        response.setCharacterEncoding("UTF-8");
        request.setCharacterEncoding("UTF-8");//进行字符处理
       
        String e_mail=request.getParameter("e_mail");
        String password=request.getParameter("password");//接收客户端传过来的账号密码


        System.out.println("电子邮箱"+e_mail+"密码"+password);
        PrintWriter out =response.getWriter();
        out.print(1);//返回给服务器的数据
    }

}

好了,我们接下来测试一下

点击登录:控制台成功接收到数据

在查看android studio的 logcat

客户端成功接收到值,我们就成功实现通信了,qq:507879147,有任何问题也可以私聊我,我的主页有需要用到的jar包

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值