一、Android Studio
1.布局文件activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/but_c"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerVertical="true"
android:layout_marginStart="150dp"
android:text="发送"/>
</RelativeLayout>
效果:
这个界面只设计了一个按钮
2.主函数MainActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "信息";
Button button_c;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button_c = findViewById(R.id.but_c);
button_c.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
final String URL= "http://192.168.31.81:8080/communication/Servlet";//根据自己的项目需要修改
Log.i(TAG, "onClick: 发送了 ");
new Thread(new Runnable() {
public void run()
{
String msg = "";
try {
java.net.URL url = new URL(URL);//生成一个URL实例,指向我们刚才设定的地址URL
//openConnection()方法只是创建了一个HttpURLConnection实例,并不是真正连接,在连接之前可以设置一些属性
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST"); //设置请求方式为post
conn.setReadTimeout(5000);//设置超时信息
conn.setConnectTimeout(5000);//设置超时信息
conn.setDoInput(true);//设置输入流,允许输入
conn.setDoOutput(true);//设置输出流,允许输出
conn.setUseCaches(false);//设置POST请求方式不能够使用缓存
//定义我们要传给servlet的参数,格式好像一定要xxx=xxx,代表键值对,如果有多组,要加一个&, //如“cmd1=version&cmd2=value”
String data = "cmd=version";
//获取输出流,其实在这之前还应该有一个操作:conn.connect();意思为建立HttpURLConnection连接,只不过//getOutputStream()方法会隐含进行连接,所以不调用connect()也可以建立连接
OutputStream out = conn.getOutputStream();
//把data里的数据以字节的形式写入out流中
out.write(data.getBytes());
//刷新,将数据缓冲区中的数据全部输出,并清空缓冲区
out.flush();
//关闭输出流并释放与流相关的资源
out.close();
//接受返回信息
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
if ((line = reader.readLine()) != null) {
msg = line;
Log.i(TAG, "onClick: 接受了" + msg);
}
conn.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
});
}
}
其中的http://192.168.31.81:8080/communication/Servlet
是ip地址+端口号+项目名+类名
3.查看ip地址的方法:
Win+R,输入cmd在命令行中输入ipconfig
IPv4 地址 . . . . . . . . . . . . : 192.168.31.81
上面这个就是ip地址
4.权限文件AndroidManifest.xml
加入
<uses-permission android:name="android.permission.INTERNET"/>
android:usesCleartextTraffic="true"
全部代码如下
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.communication">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:usesCleartextTraffic="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Communication"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
二、Myeclipse
1.新建一个Servlet类
package com;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Servlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
//避免使用super.doPost(request,response)
System.out.printf("接受\n");
PrintWriter out = response.getWriter();
String cmd=request.getParameter("cmd");
if(cmd.compareTo("version")==0) {
out.print("OK");
System.out.printf("对\n");
out.flush();
out.close();
}
else
{
out.print("No");
System.out.printf("错\n");
out.flush();
out.close();
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
2.在web.xml文件中加入
<servlet>
<display-name>Servlet</display-name>
<servlet-name>Servlet</servlet-name>
<servlet-class>com.Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet</servlet-name>
<url-pattern>/Servlet</url-pattern>
</servlet-mapping>
com.Servlet是文件的路径
com是包名
Servlet是类名
全部代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<display-name>Servlet</display-name>
<servlet-name>Servlet</servlet-name>
<servlet-class>com.Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet</servlet-name>
<url-pattern>/Servlet</url-pattern>
</servlet-mapping>
</web-app>
3.部署项目
File->Export
Java EE->WAR file,Next之后选择路径就完成了
把生成的**.war文件放到Tomcat目录下的webapps**文件夹下
运行Tomcat时,war文件会自动解压
三 、最终效果:
点击了“发送”按钮,Android studio显示发送了,Myeclipse接收到,显示“接受”,如果信息一致显示“对”,并且向Android studio返回“ok”,Android studio显示“接受了ok”。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/104986.html