【android初级】之Android获取网页数据的方法总结

简介: 本文总结了三种获取网页数据的代码,是自己在用的时候随手整理出来的。此处仅贴出函数段,不贴出import了,用的时候可以用eclipse自动import一下就行了。

本文总结了三种获取网页数据的代码,是自己在用的时候随手整理出来的。此处仅贴出函数段,不贴出import了,用的时候可以用eclipse自动import一下就行了。函数的详细用途描述请看代码中注释。调用的时候请对应函数需要的参数。


//第一种
/**获取参数(ArrayList<NameValuePair> nameValuePairs,String url)后post给远程服务器
  * 将获得的返回结果(String)返回给调用者
  * 本函数适用于查询数量较少的时候
*/
public String posturl(ArrayList<NameValuePair> nameValuePairs,String url){
     String result = "" ;
     String tmp= "" ;
     InputStream is = null ;
     try {
         HttpClient httpclient = new DefaultHttpClient();
         HttpPost httppost = new HttpPost(url);
         httppost.setEntity( new UrlEncodedFormEntity(nameValuePairs));
         HttpResponse response = httpclient.execute(httppost);
         HttpEntity entity = response.getEntity();
         is = entity.getContent();
     } catch (Exception e){
         return "Fail to establish http connection!" ;
     }
 
     try {
         BufferedReader reader = new BufferedReader( new InputStreamReader(is, "utf-8" ));
         StringBuilder sb = new StringBuilder();
         String line = null ;
         while ((line = reader.readLine()) != null ) {
             sb.append(line + "\n" );
         }
         is.close();
 
         tmp=sb.toString();
     } catch (Exception e){
         return "Fail to convert net stream!" ;
     }
 
     try {
         JSONArray jArray = new JSONArray(tmp);
         for ( int i= 0 ;i<jArray.length();i++){
             JSONObject json_data = jArray.getJSONObject(i);
             Iterator<?> keys=json_data.keys();
             while (keys.hasNext()){
                 result += json_data.getString(keys.next().toString());
             }
         }
     } catch (JSONException e){
         return "The URL you post is wrong!" ;
     }
 
     return result;
}
 
//第二种
/**获取参数指定的网页代码,将其返回给调用者,由调用者对其解析
  * 返回String
*/
public String posturl(String url){
     InputStream is = null ;
     String result = "" ;
 
     try {
         HttpClient httpclient = new DefaultHttpClient();
         HttpPost httppost = new HttpPost(url);
         HttpResponse response = httpclient.execute(httppost);
         HttpEntity entity = response.getEntity();
         is = entity.getContent();
     } catch (Exception e){
         return "Fail to establish http connection!" +e.toString();
     }
 
     try {
         BufferedReader reader = new BufferedReader( new InputStreamReader(is, "utf-8" ));
         StringBuilder sb = new StringBuilder();
         String line = null ;
         while ((line = reader.readLine()) != null ) {
             sb.append(line + "\n" );
         }
         is.close();
 
         result=sb.toString();
     } catch (Exception e){
         return "Fail to convert net stream!" ;
     }
 
     return result;
}
 
//第三种
/**获取指定地址的网页数据
  * 返回数据流
*/
public InputStream streampost(String remote_addr){
     URL infoUrl = null ;
     InputStream inStream = null ;
     try {
         infoUrl = new URL(remote_addr);
         URLConnection connection = infoUrl.openConnection();
         HttpURLConnection httpConnection = (HttpURLConnection)connection;
         int responseCode = httpConnection.getResponseCode();
         if (responseCode == HttpURLConnection.HTTP_OK){
             inStream = httpConnection.getInputStream();
         }
     } catch (MalformedURLException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
     } catch (IOException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
     }
     return inStream;
}

相关文章
|
3月前
|
存储 Shell Android开发
基于Android P,自定义Android开机动画的方法
本文详细介绍了基于Android P系统自定义开机动画的步骤,包括动画文件结构、脚本编写、ZIP打包方法以及如何将自定义动画集成到AOSP源码中。
68 2
基于Android P,自定义Android开机动画的方法
|
3月前
|
Android开发
基于android-11.0.0_r39,系统应用的手动签名方法和过程
本文介绍了基于Android 11.0.0_r39版本进行系统应用手动签名的方法和解决签名过程中遇到的错误,包括处理`no conscrypt_openjdk_jni-linux-x86_64`和`RegisterNatives failed`的问题。
149 2
|
10天前
|
缓存 Java Shell
Android 系统缓存扫描与清理方法分析
Android 系统缓存从原理探索到实现。
35 15
Android 系统缓存扫描与清理方法分析
|
24天前
|
存储 大数据 数据库
Android经典面试题之Intent传递数据大小为什么限制是1M?
在 Android 中,使用 Intent 传递数据时存在约 1MB 的大小限制,这是由于 Binder 机制的事务缓冲区限制、Intent 的设计初衷以及内存消耗和性能问题所致。推荐使用文件存储、SharedPreferences、数据库存储或 ContentProvider 等方式传递大数据。
36 0
|
2月前
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
42 2
|
30天前
|
安全 网络安全 Android开发
深度解析:利用Universal Links与Android App Links实现无缝网页至应用跳转的安全考量
【10月更文挑战第2天】在移动互联网时代,用户经常需要从网页无缝跳转到移动应用中。这种跳转不仅需要提供流畅的用户体验,还要确保安全性。本文将深入探讨如何利用Universal Links(仅限于iOS)和Android App Links技术实现这一目标,并分析其安全性。
163 0
|
3月前
|
Android开发
Android在rootdir根目录创建自定义目录和挂载点的方法
本文介绍了在Android高通平台的根目录下创建自定义目录和挂载点的方法,通过修改Android.mk文件并使用`LOCAL_POST_INSTALL_CMD`变量在编译过程中添加目录,最终在ramdisk.img的系统根路径下成功创建了`/factory/bin`目录。
169 1
|
3月前
|
开发工具 uml git
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
本文分享了下载AOSP源码的方法,包括如何使用repo工具和处理常见的repo sync错误,以及配置Python环境以确保顺利同步特定版本的AOSP代码。
359 0
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
|
3月前
|
Android开发
Android项目架构设计问题之onFirstItemVisibleChanged方法的调用如何解决
Android项目架构设计问题之onFirstItemVisibleChanged方法的调用如何解决
38 0
|
3月前
|
Java 测试技术 Android开发
Android项目架构设计问题之使用反射调用类的私有方法如何解决
Android项目架构设计问题之使用反射调用类的私有方法如何解决
25 0