安卓学习笔记(八)http通信——安卓第五天
来源:互联网 发布:kovsh.mac 编辑:程序博客网 时间:2024/05/22 08:15
http通信用到两种接口。第二种比第一种封装得更加好,两种都行。
和socket不同的是,http只能请求相应,也就是一定要客户端找一下服务器,服务器回一下。而且服务器不管每次找他的是谁,要什么给什么就是了。
1. HttpURLConnection接口
三步走:
第一步:因为必须找一下服务器,服务器才回自己一下,所以先腾个地方给服务器发请求。
暂时还不懂线程那里是怎么回事,暂时就还是用onClick就发一个请求来。
第二步:解决URL
URL url = new URL(new String("http://......"));
HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();设置一些属性(可选)
urlConn.setDoOutput(true); urlConn.setDoInput(true); //设置请求方式为POST urlConn.setRequestMethod("POST"); //如果是post的话就加这一句 //POST请求不能使用缓存 urlConn.setUseCaches(false); //关闭连接 urlConn.disConnection();
如果是post的话要加这些东西
urlConnect.setConnectTimeout(3000); // 设置连接超时时间urlConnect.setDoOutput(true); //post请求必须设置允许输出urlConnect.setUseCaches(false); //post请求不能使用缓存urlConnect.setRequestMethod("POST"); //设置post方式请求urlConnect.setInstanceFollowRedirects(true); urlConnect.setRequestProperty("Content-Type","application/x-www-form-urlencode");// 配置请求Content-TypeurlConnect.connect(); // 开始连接//下面是送参数过去,因为是post所以不能在URL里写参数DataOutputStream dos = new DataOutputStream(urlConnect.getOutputStream()); // 发送请求参数dos.write(postData);dos.flush();dos.close();
第四步:这次步数比较多,再多来一步
接受传回来的数据
if ((x = urlConnect.getResponseCode()) == 200) { //请求成功final byte[] data = readInputStream(urlConnect.getInputStream()); txtV_rslt.setText(new String(data, "UTF-8")); txtV_rslt.post(new Runnable() { @Override public void run() { try {txtV_rslt.setText(new String(data, "UTF-8"));} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();} }}); }} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();Log.i("error", e.toString());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();Log.i("error", e.toString());} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();Log.i("error", e.toString());}
其中
public byte[] readInputStream(InputStream inStream) throws Exception{ ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while( (len = inStream.read(buffer)) !=-1 ){ outStream.write(buffer, 0, len); } byte[] data = outStream.toByteArray();//转化为二进制数据 outStream.close(); inStream.close(); return data; }
2. HttpClient接口
还没看。
0 0
- 安卓学习笔记(八)http通信——安卓第五天
- 安卓学习笔记(八)tabhost——安卓第六天
- 安卓学习笔记(八)、FrameLayout
- iOS学习笔记(八)——iOS网络通信http之NSURLConnection
- iOS学习笔记(八)——iOS网络通信http之NSURLConnection
- iOS学习笔记(八)——iOS网络通信http之NSURLConnection
- iOS学习笔记(八)——iOS网络通信http之NSURLConnection
- iOS学习笔记(八)——iOS网络通信http之NSURLConnection
- 安卓学习第五天
- Android学习笔记——Http通信
- [安卓基础]学习第五天
- 安卓学习历程-第五天
- 【学习笔记】-HTTP通信
- HTTP协议学习笔记八
- 安卓学习笔记(八):内容提供者 跟着API指南来学习
- 安卓学习笔记(八):进程和线程 跟着API指南来学习
- Python学习笔记——Http通信requests请求
- 学习笔记(一)http通信本质
- mysql动态修改的配置参数
- block传值法
- hadoop伪分布部署001(详细菜鸟专属频道)
- magento目录结构
- js使用正则实现ReplaceAll全部替换的方法
- 安卓学习笔记(八)http通信——安卓第五天
- IEEE会员
- 写一个类似iPhone内置拨号盘上的号码显示Label
- 二分图最大匹配总结
- poj 2472 106 miles to Chicago
- hdu 1698 线段树区间更新
- hdu 4819 二维线段树点更新
- POJ 2236 Wireless Network
- 背包问题 ——第K优解 或 次优解