趁着疫情横行,这几天就乖乖呆在家里做毕设,做的是一个昏天黑地;
讲真的,做一次毕业设计才知道自己学的有多烂。
毕设真的是对自己所学知识的一次梳理,消化,巩固的过程。同时也获得了课堂书本里学不到的经验,是一次深层次的积累。
言归正传;
先新建我的MyPostUtils工具类;
前人栽树,后人乘凉,此方法也是模仿别人学以致用
贴代码:
public class MyPostUtils {public static String sendPost(String url,String param){OutputStreamWriter out =null;BufferedReader reader = null;/*存储要返回的值*/String response = "";//创建连接try {URL httpUrl = null; //HTTP URL类 用这个类来创建连接//创建URLhttpUrl = new URL(url);//建立连接HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();conn.setRequestMethod("POST");conn.setRequestProperty("Content-Type", "application/json");//conn.setRequestProperty("connection", "keep-alive");conn.setUseCaches(false);//设置不要缓存conn.setInstanceFollowRedirects(true);conn.setDoOutput(true);conn.setDoInput(true);t();//POST请求写给服务器数据out = new OutputStream());out.write(param);out.flush();//读取响应收到服务器传回的数据reader = new BufferedReader(new InputStream()));String lines;while ((lines = adLine()) != null) {lines = new Bytes(), "utf-8");response+=lines;}reader.close();// 断开连接conn.disconnect();} catch (Exception e) {System.out.println("发送 POST 请求出现异常!"+e);e.printStackTrace();}//使用finally块来关闭输出流、输入流finally{try{if(out!=null){out.close();}if(reader!=null){reader.close();}}catch(IOException ex){ex.printStackTrace();}}return response;}
}
怎么说呢:
post请求;有参有返:给一个url,给一个参数传给服务器,返回值是接收服务器的数据
在安卓activity的onCreate()里面新建线程,调用post工具类;进行http请求;
@Overrideprotected void onCreate(Bundle savedInstanceState) {Create(savedInstanceState);setContentView(R.layout.activity_begin);new Thread(new Runnable() {@Overridepublic void run() {/*与服务器建立第一次连接初始化容器*/MyPostUtils.sendPost("192.168.43.53:8080/lz/map/begin", "");}}).start();
仔细看的话你会发现我的工具类中sendPost方法是两个参数的,为什么我的请求只有一个url呢?
因为我只进行请求,并不给服务器传递任何参数;
我的服务器部分代码是这样的;
@ResponseBody@RequestMapping("/begin")public void beginMap1(HttpServletRequest request) {System.out.println("手机端初始化地图了");
别的不管,只要请求成功,控制台就会输出手机端初始化地图成功了这句话。
此处随便新建一个main函数里面测试
/*要发送的json格式经纬度信息转成string*/JSONObject jsonObject = new JSONObject();jsonObject.put("latitude", "110.685");jsonObject.put("longitude", "34.697");jsonObject.put("speed", "12.0");/*json转为string格式*/String json = String.valueOf(jsonObject);System.out.println(json);/*发送地址*/String url = "localhost:8080/lz/map/begin1";String url2 = "localhost:8080/lz/map/change1";sendPost(url2, json);
因为我服务器没有返回数据,所以客户端reader是不用的;
只需要调用就行了,不需要接收数据;
服务器端解析数据;
String map = "";try {InputStreamReader reader = new InputStream(),"UTF-8");char[] ch = new char[1024];int len = 0;while ((len = ad(ch)) != -1) {/*char数组转换成string格式*/map = String.valueOf(ch);}} catch (Exception e) {e.printStackTrace();}/*处理数据转为json*/JSONObject json = JSONObject.parseObject(map);System.out.println("json:" + json);/*json封装成位置信息*/Location location = new Location();location.String("latitude"));location.String("longitude"));location.setSpeed(Double.String("speed")));System.out.println("location:" + location);
最后控制台就打印出客户端传来的数据;
本文发布于:2024-01-30 21:13:20,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170662040122881.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |