男儿欲遂平生志,五经勤向窗前读。这篇文章主要讲述Android 的网络编程相关的知识,希望能为你提供帮助。
android的网络编程分为2种:基于socket的,和基于http协议的。
基于socket的用法
服务器端:
先启动一个服务器端的socket
ServerSocket svr = new ServerSocket(8989);
开始侦听请求Socket s = svr.accept();
取得输入和输出DataInputStream dis = new DataInputStream(s.getInputStream());
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
Socket 的交互通过流来完成,即是说传送的字节流,因此任何文件都可以在上面传送。谁打开的记得要关上。
用DataInputStream/DataOutputStream来进行包装是因为我们想要他们对基本数据类型的读写功能readInt(),writeInt(),readUTF(),writeUTF()等等。
客户端:
发起一个socket连接Socket s = new Socket("192.168.1.200",8989);
取得输入和输出DataInputStream dis = new DataInputStream(s.getInputStream());
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
之后就可以相互通信了。谁打开的记得要关上。
基于Http协议
一般是发送请求到某个应用服务器。此时需要用到HttpURLConnection
先取得HttpURLConnection urlConn = new URL("http://www.google.com").openConnection();
设置标志
urlConn.setDoOutput(true);
urlConn.setDoInput(true);
//post的情况下需要设置DoOutput为true
urlConn.setRequestMethod("POST");
urlConn.setUseCache(false);
//设置是否用缓存
urlConn.setRequestProperty("Content-type","application/x-www-form-urlencoded");
//设置content-type
获得输出流,便于想服务器发送信息。
DataOutputStream dos = new DataOutputStream(urlConn.getOutputStream());
望流里面写请求参数
dos.writeBytes("name="+URLEncoder.encode("chenmouren","gb2312");
dos.flush();
dos.close();
//发送完后马上关闭。
获得输入流,取数据
BufferReader reader = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
reader.readLine();
//用 !=null来判断是否结束
reader.close();
读完了记得关闭connectionurlConn.disconnect();
【Android 的网络编程】流程记录就到此为止。
推荐阅读
- Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正
- 119 android:hardwareAccelerated="true"or"false"硬件加速的重要性
- TYPESDK手游聚合SDK客户端设计思路与架构之二(安卓平台统一化接口结构及思路)
- 安卓Textview的getLineCount返回0
- Android使用KeyStore对数据进行加密
- 从ViewPager嵌套RecyclerView再嵌套RecyclerView看安卓事件分发机制
- android多cpu架构适配开篇
- 在Android中用Kotlin的Anko运行后台任务(KAD 09)
- Android studio 怎么使用单元测试(不需要device)