笔记:安卓和服务器通过http的交互

阅读: 评论:0

笔记:安卓和服务器通过http的交互

笔记:安卓和服务器通过http的交互

趁着疫情横行,这几天就乖乖呆在家里做毕设,做的是一个昏天黑地;

讲真的,做一次毕业设计才知道自己学的有多烂。

毕设真的是对自己所学知识的一次梳理,消化,巩固的过程。同时也获得了课堂书本里学不到的经验,是一次深层次的积累。

言归正传;

先新建我的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,给一个参数传给服务器,返回值是接收服务器的数据

  • 只请求,不传不接收数据,调用只需要给个url;
  • 请求且传送数据,不接收,调用给个url和参数;
  • 请求发送且接收;给个url和参数后,还需要给个string=sendPost(),来接收数据;

1.无数据传输的请求

在安卓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("手机端初始化地图了");

别的不管,只要请求成功,控制台就会输出手机端初始化地图成功了这句话。

2.传输数据

此处随便新建一个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小时内删除。

标签:服务器   笔记   http
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23