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包