Android开发基础之网络请求实例
程序员文章站
2023-01-23 08:10:33
http获取网络数据的步骤
添加权限
// 1.得到图片的url路径
url url = new url(path);
// 2.通过路径打开一个http的连接,并设置请求参数...
http获取网络数据的步骤
添加权限
// 1.得到图片的url路径 url url = new url(path); // 2.通过路径打开一个http的连接,并设置请求参数 httpurlconnection conn = (httpurlconnection) url.openconnection();// http // 3.得到响应码,判断与服务器连接是否正常 int code = conn.getresponsecode(); // 200 ok 404 资源没找到 503服务器内部错误 if (code == 200) { // 4.得到服务器返回的数据流 inputstream is = conn.getinputstream(); }
http请求的小细节
//初始化时的设置 conn.setrequestmethod("get");//设置请求参数为get, 默认的请求方式就是get,此处区分大小写 conn.setconnecttimeout(5000);//设置请求服务器的超时时间. //服务器返回数据属性的获取 string type = conn.getcontenttype();//获取返回数据的类型 int length = conn.getcontentlength();//获取返回数据的长度 //user-agent 当前浏览器的类型,服务器可以根据浏览器的类型的不同,返回不同的页面
获取输入流的处理
将流转换为bitmap
bitmap bitmap = bitmapfactory.decodestream(is); iv.setimagebitmap(bitmap);
将流转化为字符串
public static string readstream(inputstream is) throws exception{ //bytearrayoutputstream类是在创建它的实例时,程序内部创建一个byte型数组的缓冲区, //缓冲区会随着数据的不断写入而自动增长。可使用 tobytearray()和 tostring()获取数据 bytearrayoutputstream baos = new bytearrayoutputstream(); byte[] buffer = new byte[1024]; int len = -1; while((len = is.read(buffer))!=-1){ baos.write(buffer, 0, len); } is.close(); string temp = baos.tostring(); if(temp.contains("charset=utf-8")){ return temp; }else if(temp.contains("gb2312")){ return baos.tostring("gb2312"); }return null; }
乱码相关的处理
string.getbytes(string charsetname)和new string(byte[] bytes, string charsetname)
//将字符串按指定的编码转化为byte数组,默认采用本地码表 byte[] bytes = string.getbytes(string charsetname) //将byte数组按指定的编码转化为字符串 new string(byte[] bytes, string charsetname)
**注意:出现乱码时不要修改文件,修改后无论怎么切换编码都是错的了**
提交数据中含有中文的注意事项
客户端
//提交的数据中含有中文时,将字符串qq按照编码utf-8进行编码 urlencoder.encode(qq, "utf-8");
**服务端**
string qq =request.getparameter("qq");//tomcat采用的编码是iso-8859-1 system.out.println("qq:"+new string(qq.getbytes("iso-8859-1"),"utf-8"));
上一篇: 杨玉环为什么没能成为皇后?原因是什么?
下一篇: 司马繇为什么要杀杨骏?原因是什么