-
通过HttpURLConnection和多线程下载文件 1.对于这个例子,思路如下: (1)MainActivity中通过一个点击事件实现下载动作,等待下载完毕之后就更新textView显示下载文件的位置。 (2)创建一个Downloader类,实现真正的下载任务。在这个Downloader类中使用三个线程来实现各自需要下载的字节数。 (3)Downloader完成下载任务后通过Handler发送一个message来更新主线程的UI 2.MainActivity 这里很简单,在button点击事件中创建Downloader类,执行Downloader的下载函数 new Thread(){ public void run() { Downloader downloader = new Downloader(url, handler); downloader.downloadFile(); } }.start(); 注意因为Downloader的下载函数要使用网络请求,所以必须开辟一个新线程来执行。否则就会NetworkOnMainThreadException异常 2.Downloader类及其下载函数 Downloader中要实现三个线程各自下载各自字节的操作 (1)创建和初始化所需要的变量 //前面两个变量需要从MainActivity获得(构造函数) private String url; private Handler handler; private String fileName; private File fileDownload; //用来执行多线程的线程池,固定线程数为3个 private Executor threadPool = Executors.newFixedThreadPool(3); (2)构造函数 前面定义了两个变量fileName和fileDownload,当获得url的时候,这两个变量就可以初始化,而且他俩是全局的。 this.fileName = url.substring(url.lastIndexOf("/")+1); this.fileDownload = new File(Environment.getExternalStorageDirectory(), fileName); (下一笔记)查看全部
-
在webweiw中显示图片,主要知识点有:bitmap、handler、inputstream、outputstream查看全部
-
WebView应用实例,展现百度首页查看全部
-
通过HttpURLconnection获取xml文件并解析 1.对照着xml文件(如图),来实现这个解析的过程 InputStream is = conn.getInputStream(); //获取url对应的输入流 XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser parser = factory.newPullParser(); //创建一个XmlPullParser实例 parser.setInput(is, "utf-8"); //给parser设置输入流 //parser是根据EventType来进行解析的 int eventType = parser.getEventType(); final List<Girl> girls = new ArrayList<Girl>(); Girl girl = null; while(eventType != XmlPullParser.END_DOCUMENT){ String data = parser.getName(); //获取标签后面的字串,比如<girl>中的gril switch (eventType) { case XmlPullParser.START_TAG: //应该对应<girl>,<name>这种标签 if("girl".equals(data)){ //标签名字是girl girl = new Girl(); } if("name".equals(data)&&girl != null){ girl.setName(parser.nextText()); } …… break; case XmlPullParser.END_TAG: //对应</girl>,</name>,</age>...这种标签 if("girl".equals(data) && girl != null){ //结束标签,对应</girl> girls.add(girl); } break; } eventType = parser.next(); }查看全部
-
响应吗查看全部
-
常见请求查看全部
-
ACK查看全部
-
SYN查看全部
-
APP客户端解析json并显示内容(JsonTestDemo) 对于这个例子思考一下实现的思路,其实并不难,而且这个例子和《Android必学——异步加载》是一样的,而且后者要比这里难多了,这一次自己不看视频的实现了这个例子,也算是检验一下自己所学的知识,算给自己一个交代。 重点在于: 1.如何通过代码解析json数据 (1)需要按照json的格式定义所需要的类,Person,以及Person中的SchoolInfo (2)理清Person和SchoolInfo的封装关系,一步步解析JsonString JSONObject jsonObject = new JSONObject(jsonString); JSONArray personData = jsonObject.getJSONArray("personData"); for (int i = 0; i<personData.length(); i++) { JSONObject personObject = personData.getJSONObject(i); person.setName(personObject.getString("name")); …… person.setSchoolInfos(schoolInfos); persons.add(person); } 2.运用异步加载的实现方法 获取json原始数据的部分我使用了AsyncTask,而在加载图片的ImageLoader中使用了Handler 3.注意,下面两种方式都可以拿到输入流,推荐前者。 //HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection(); //conn.setReadTimeout(5000); //conn.setRequestMethod("GET"); //String jsonString = readStream(conn.getInputStream());//得到json原始数据 String jsonString = readStream(new URL(url).openStream());//得到json原始数据查看全部
-
使用java生成JSon数据 1.json数据在线解析工具 http://www.bejson.com/ 2.gson-2.2.4的jar包怎么放在JAVA EE: 拷贝到WebContent->WEB-INF->lib 3.根据这个例子中所要最后生成的json数据格式,按步骤一步步来做 (1)这里直接在JAVA EE中写代码 (2)在对应包名下(com.imooc.servlet)创建所需要的类 Person、Result、SchoolInfo,搞清楚相关封装关系 (3)在最后的servlet代码(JsonServerServlet.java)中实现doGet()/doPost()方法 response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); //创建JSon的数据 …… persons.add(person1); persons.add(person2); result.setPersonData(persons); Gson gson = new Gson(); out.println(gson.toJson(result));查看全部
-
get 请求是把参数加载url后 post 请求是把参数当做对象传查看全部
-
HttpClient 1.HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包 官网http://hc.apache.org/index.html可以下载和查阅源码和使用文档,下载:http://hc.apache.org/downloads.cgi 2.HttpClient对于Android的支持(大致懂了) 应该是从API23开始,Android就不再集成HttpClient库了,按照apache的官方描述,可以通过添加dependencies来使用HttpClient http://hc.apache.org/httpcomponents-client-4.3.x/android-port.html HttpClient 4.3 for Android is available from the Maven central and can be added to Gradle builds as the following dependency: dependencies { compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1' } 但是这样使用起来很不方便,好像有些接口已经变掉了。如果还想像老师所讲的例子一样使用,就必须 (1)添加legacy支持 android { useLibrary 'org.apache.http.legacy' } (2)将SDK降为API21 android { compileSdkVersion 21 } 这两种方法都试过,都OK 3.对于Java程序的支持,java本身就是支持的,这里是一些很好的使用实例 http://blog.csdn.net/wangpeng047/article/details/19624529 4.Android中使用HttpClient方法 Get和Post方法大致相同,只是Post需要封装发送请求之前的UrlEncodedFormEntity实体(如图) httpPost.setEntity(uefEntity); 5.更多的使用方法还需要认真阅读文档查看全部
-
听不懂查看全部
-
Http协议详解 1.通过chrome浏览器的更多工具->开发者工具->network可以查看client和server之间交互的数据包详情 2.GET和POST体现的区别 除了发送数据的方式一个是url,一个是form data之外,没有区别。查看全部
-
POST和GET对乱码的处理 1.这一部分确实是比较迷惑的知识点,我到现在没搞懂,只是遇到问题网上找答案,然后多次尝试来解决。 2.图中对Servlet这一端所做的转码的操作我认为没有必要: 这只是保证在System.out.println()打印中文时不出现乱码,但其实对于client和server两端的交互并没有影响。 不管是从app还是JavaEE网页输入中文,得到流均不会提示乱码 3.分析: 当通过app或JavaEE网页不管是通过哪种编码格式发送流,server都会按照同样的编码输出流 但是要注意server端默认的处理编码是“iso-9589-1”,如果想要改变编码方式,参照图。查看全部
举报
0/150
提交
取消