`
a38876399
  • 浏览: 147840 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Android 利用HttpURLConnection对象和Internet交互

阅读更多

1.从Internet获取网页 
发送请求,将网页以流的形式读回来. 
1)创建一个URL对象:URL url = new URL("http://www.sohu.com"); 
2)利用HttpURLConnection对象从网络中获取网页数据:HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
3)设置连接超时:conn.setConnectTimeout(6* 1000); 
4)对响应码进行判断:if (conn.getResponseCode() != 200) throw new RuntimeException("请求url失败"); 
5)得到网络返回的输入流:InputStream is = conn.getInputStream(); 
6)String result = readData(is, "GBK"); 
conn.disconnect(); 
总结: 
--我们必须要记得设置连接超时,如果网络不好,Android系统在超过默认时间会收回资源中断操作. 
--返回的响应码200,是成功. 
--利用ByteArrayOutputStream类,将得到的输入流写入内存. 
--在Android中对文件流的操作和JAVA SE上面是一样的. 

2.从Internet获取文件 
利用HttpURLConnection对象,我们可以从网络中获取文件数据. 
1)创建URL对象,并将文件路径传入:URL url = new URL("http://photocdn.sohu.com/20100125/Img269812337.jpg"); 
2)创建HttpURLConnection对象,从网络中获取文件数据:HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
3)设置连接超时:conn.setConnectTimeout(6* 1000); 
4)对响应码进行判断:if (conn.getResponseCode() != 200) throw new RuntimeException("请求url失败"); 
5)得到网络返回的输入流:InputStream is = conn.getInputStream(); 
6)将得到的文件流写出:outStream.write(buffer, 0, len); 
总结: 
--在对大文件的操作时,要将文件写到SDCard上面,不要直接写到手机内存上. 
--操作大文件是,要一遍从网络上读,一遍要往SDCard上面写,减少手机内存的使用.这点很重要,面试经常会被问到. 
--对文件流操作完,要记得及时关闭. 

3.向Internet发送请求参数 
1)将地址和参数存到byte数组中:byte[] data = params.toString().getBytes(); 
2)创建URL对象:URL realUrl = new URL(requestUrl); 
3)通过HttpURLConnection对象,向网络地址发送请求:HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection(); 
4)设置容许输出:conn.setDoOutput(true); 
5)设置不使用缓存:conn.setUseCaches(false); 
6)设置使用POST的方式发送:conn.setRequestMethod("POST");            
7)设置维持长连接:conn.setRequestProperty("Connection", "Keep-Alive"); 
8)设置文件字符集:conn.setRequestProperty("Charset", "UTF-8"); 
9)设置文件长度:conn.setRequestProperty("Content-Length", String.valueOf(data.length)); 
10)设置文件类型:conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); 
11)以流的方式输出. 
总结: 
--发送POST请求必须设置允许输出 
--不要使用缓存,容易出现问题. 
--在开始用HttpURLConnection对象的setRequestProperty()设置,就是生成HTML文件头. 

4.向Internet发送xml数据 
XML格式是通信的标准语言,Android系统也可以通过发送XML文件传输数据. 
1)将生成的XML文件写入到byte数组中,并设置为UTF-8:byte[] xmlbyte = xml.toString().getBytes("UTF-8"); 
2)创建URL对象,并指定地址和参数:URL url = new URL("http://localhost:8080/itcast/contanctmanage.do?method=readxml"); 
3)获得链接:HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
4)设置连接超时:conn.setConnectTimeout(6* 1000); 
5)设置允许输出conn.setDoOutput(true); 
6)设置不使用缓存:conn.setUseCaches(false); 
7)设置以POST方式传输:conn.setRequestMethod("POST");            
8)维持长连接:conn.setRequestProperty("Connection", "Keep-Alive"); 
9)设置字符集:conn.setRequestProperty("Charset", "UTF-8"); 
10)设置文件的总长度:conn.setRequestProperty("Content-Length", String.valueOf(xmlbyte.length)); 
11)设置文件类型:conn.setRequestProperty("Content-Type", "text/xml; charset=UTF-8"); 
12)以文件流的方式发送xml数据:outStream.write(xmlbyte); 
总结: 
--我们使用的是用HTML的方式传输文件,这个方式只能传输一般在5M一下的文件. 
--传输大文件不适合用HTML的方式,传输大文件我们要面向Socket编程.确保程序的稳定性.

分享到:
评论
1 楼 mjl19901003 2011-09-01  
听详细的

相关推荐

    HttpURLConnection和简单的Android服务器交互

    在Android中,HttpURLConnection是实现服务器交互的基础工具,理解其工作原理和使用方式对开发至关重要。合理利用它,可以构建高效、安全的网络通信机制,实现丰富的功能,如登录注册、数据同步、文件上传下载等。...

    android+httpurlconnection

    本项目聚焦于如何利用HTTPURLConnection实现从网络上下载图片并显示在Android Activity中。这个过程涉及到网络请求、多线程处理、数据解码以及UI更新等多个关键知识点。 首先,我们来讲解HTTPURLConnection的基本...

    Android使用HttpURLConnection访问网络

    本篇文章将深入探讨如何在Android应用中利用HttpURLConnection访问网络,包括设置请求方法、添加请求头、处理响应以及解决常见问题。 1. HttpURLConnection简介: HttpURLConnection是Java内置的类,它是...

    Android客户端和服务器端数据交互Demo01.zip

    4. **数据解析**:服务器返回的JSON或XML数据需要解析成对象,Android提供了Gson、Jackson和org.json等库,可以方便地将字符串转换为Java对象。 5. **错误处理**:处理网络请求可能出现的异常,如网络不可用、超时...

    基于Android的APP前端数据交互.pdf

    人类的吃穿住行,甚至娱乐,消费都离不开手机APP,在国内市场,Android操作系统远多于Ios操作系统,所以我们必须利用好Android平台来开发各类软件,为解决app前端与web服务端的数据交互问题,我们一般采用post和get...

    安卓Android源码——与php服务器交互实例源码.zip

    7. **POST和GET请求**:在与服务器交互时,Android应用可能会发送POST或GET请求。GET请求用于获取资源,参数附在URL上;POST请求则可以传递大量数据,参数在请求体中。 8. **错误处理和重试机制**:在实现与服务器...

    Android中与网络交互的处理

    在Android应用开发中,与服务器进行交互是必不可少的一部分,它涉及到数据的获取、发送和更新。本主题将深入探讨如何在Android中实现网络交互,主要关注使用HttpClient和HttpResponse这两个关键组件。 首先,...

    Android与servlet服务器交互

    在IT行业中,Android和Servlet之间的交互是移动应用开发中常见的技术组合。Android是谷歌推出的开源移动操作系统,广泛用于智能手机和平板电脑,而Servlet是Java Web编程的重要组成部分,用于构建动态Web服务。本...

    android客户端实现与服务器交互的用户登录功能

    在Android客户端实现与服务器交互的...以上是实现Android客户端与服务器交互用户登录功能的主要技术点和注意事项。在实际开发中,还需要关注性能优化、用户体验设计、异常处理等多个方面,确保整个流程的顺畅和安全。

    android应用和web简单交互DEMO

    综上所述,这个DEMO涵盖了Android应用与Web服务器交互的基本流程和技术点,包括网络请求、数据格式、权限管理、异步处理以及错误处理等,是学习和实践Android网络编程的好例子。通过深入研究和理解这个DEMO,开发者...

    Android和servlet交互的用户登录演示例子

    这个简单的例子对于初学者来说是一个很好的起点,通过实际操作,可以更好地理解和掌握Android与服务器之间的数据交互。在深入学习后,可以考虑引入更先进的网络库,以及考虑安全性、用户体验等方面的优化。

    android app webservice 交互

    1. **添加依赖**:在Android项目中,需要添加必要的网络权限(`<uses-permission android:name="android.permission.INTERNET" />`)到AndroidManifest.xml文件,并引入HTTP库(如HttpURLConnection或Apache ...

    android(eclipse)和myeclipse(tomcat服务器)交互

    以上就是关于"android(eclipse)和myeclipse(tomcat服务器)交互"的相关知识点,涵盖从服务器配置到客户端请求的全过程。通过这个过程,开发者可以构建起Android应用与后台服务的桥梁,实现数据的交换和服务调用。

    Android Http交互代码实例

    `HttpURLConnection`是Android SDK内置的API,适用于简单的小规模请求,而`Volley`和`OkHttp`则提供了更高效的网络请求管理和缓存机制,适合大型应用。 1. **使用HttpURLConnection**: - 创建URL对象:`URL url =...

    httpurlconnection xml

    在Android开发中,HTTPURLConnection是一个重要的网络通信接口,它允许我们通过HTTP和HTTPS协议与Web服务器进行交互。本示例中的代码着重于利用HTTPURLConnection处理XML数据,这在移动应用中尤其常见,比如从远程...

    Android 与php服务器交互实例源码.zip

    - 在Android 6.0及以上版本,需要在运行时动态申请`INTERNET`权限,以允许应用访问网络。 6. **安全考虑** - 使用HTTPS协议确保数据传输的安全性,防止中间人攻击。 - 对敏感信息如密码进行加密处理,避免明文...

    Android高级应用源码-客户端与服务端的json交互的小例子.rar

    JSON(JavaScript Object Notation)是一种简洁且直观的数据交换格式,它可以表示数组和对象。在Android中,我们通常使用Gson库或org.json库来解析和序列化JSON数据。例如,Gson可以将Java对象转换为JSON字符串,...

    android客户端连接服务器并交互.zip

    2. **网络请求库**:Android SDK虽然提供了HttpURLConnection类来处理网络请求,但在实际开发中,我们通常会使用第三方网络请求库,如OkHttp、Volley、Retrofit等,它们简化了API调用,提高了性能和易用性。...

    Android HttpURLConnection.getResponseCode()错误解决方法

    在Android开发中,`HttpURLConnection` 是一个常用的网络通信组件,它允许应用程序通过HTTP和HTTPS协议与服务器进行交互。然而,使用`getResponseCode()`方法获取HTTP响应码时,可能会遇到`IOException`错误,这通常...

Global site tag (gtag.js) - Google Analytics