HttpURLConnection连接 详解

1.HttpURLConnection连接URL

进行网络连接前必须拥有对应的权限,所以我们需要在AndroidManifest.xml文件中添加访问网络的权限:<uses-permission
android:name="android.permission.INTERNET"/>

官方链接:http://developer.android.com/reference/java/net/HttpURLConnection.html

1)创建一个URL对象

URL url = new URL(http://www.baidu.com);

2)利用HttpURLConnection对象从网络中获取网页数据

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

3)设置连接超时

conn.setConnectTimeout(6*1000);

4)对响应码进行判断

if (conn.getResponseCode() != 200)    //从Internet获取网页,发送请求,将网页以流的形式读回来

throw new RuntimeException("请求url失败");

5)得到网络返回的输入流

InputStream is = conn.getInputStream();

6)String result = readData(is, "GBK"); //文件流输入出文件用outStream.write

7)conn.disconnect();

总结:

--记得设置连接超时,如果网络不好,Android系统在超过默认时间会收回资源中断操作.

--返回的响应码200,是成功.

--在Android中对文件流的操作和JAVA SE上面是一样的.

--在对大文件的操作时,要将文件写到SDCard上面,不要直接写到手机内存上.

--操作大文件是,要一遍从网络上读,一遍要往SDCard上面写,减少手机内存的使用.这点很重要,面试经常会被问到.

--对文件流操作完,要记得及时关闭.

2.向Internet发送请求参数

步骤:

1)创建URL对象:URL realUrl = new URL(requestUrl);

2)通过HttpURLConnection对象,向网络地址发送请求

HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();

3)设置容许输出:conn.setDoOutput(true);

4)设置不使用缓存:conn.setUseCaches(false);

5)设置使用POST的方式发送:conn.setRequestMethod("POST");

6)设置维持长连接:conn.setRequestProperty("Connection", "Keep-Alive");

7)设置文件字符集:conn.setRequestProperty("Charset", "UTF-8");

8)设置文件长度:conn.setRequestProperty("Content-Length", String.valueOf(data.length));

9)设置文件类型:conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

10)以流的方式输出.

总结:

--发送POST请求必须设置允许输出

--不要使用缓存,容易出现问题.

--在开始用HttpURLConnection对象的setRequestProperty()设置,就是生成HTML文件头.

3.向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编程.确保程序的稳定性

--将地址和参数存到byte数组中:byte[] data = params.toString().getBytes();

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 18:57:44

HttpURLConnection连接 详解的相关文章

HttpURLConnection 使用详解

/* * URL请求的类别分为二类,GET与POST请求.二者的区别在于: * a:) get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet, * b:) post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内. */ URL url = new URL("http://localhost:8080/TestHttpURLConnectionPro.do"); HttpURLConnection urlConn =

HttpUrlConnection使用详解--转AAAAA

http://hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/httpclient/HttpConnection.html HttpUrlConnection使用详解--转 http://blog.csdn.net/fightingXia/article/details/71775516 一,HttpURLconnection的介绍 在Android开发中网络请求是最常用的操作之一, Android SDK中对HTTP(超文本传输协

Android中HttpURLConnection使用详解

认识Http协议 Android中发送http网络请求是很常见的,要有GET请求和POST请求.一个完整的http请求需要经历两个过程:客户端发送请求到服务器,然后服务器将结果返回给客户端,如下图所示: 客户端->服务器 客户端向服务器发送请求主要包含以下信息:请求的Url地址.请求头以及可选的请求体,打开百度首页,客户端向服务器发送的信息如下所示: 请求URL(Request URL) 上图中的Request URL就是请求的Url地址,即https://www.baidu.com,该Url没

HttpURLConnection用法详解

使用HTTP协议访问网络: URL url=new URL("http://www.baidu.com"); HttpURLConnection connection=(HttpURLConnection)url.openConnection(); GET:表示希望从服务器那里获取数据 POST:表示希望提交数据给服务器 connection.setRequestMethod("GET");//设置HTTP请求使用的方法 connection.setConnectT

HttpURLConnection 用法详解

一.继承关系 1.  java.lang.Object --java.net.URLConnection --java.net.HttpURLConnection 二.URLConnection类 1.URLConnection代表应用程序和 URL 之间的通信链接. 2.作用:代表应用程序和 URL 之间的通信链接: 3. 创建一个到 URL 的连接需要几个步骤: (1)通过在 URL 上调用 openConnection 方法创建连接对象: (2)处理设置参数和一般请求属性: (3)使用 c

中国与美国光纤网络连接详解

众所周知,中美刚好在地球的对面,隔着老大老大的太平洋.为了两国人民的“友谊”,网络互通,中美之间的网络.电话等数据传输得通过跨域太平洋的海底光缆来进行.目前中美之间有两条直达海底光缆,一条是 China-USCableNetwork,网络容量达到了 80Gbps.中国大陆登陆点为上海崇明岛和汕头,美国登陆点为加州的San Luis Obispo(位于圣何塞与洛杉矶之间).另外一条即著名的Trans Pacific Cable,设计容量达到了惊人的5.12Tbps,大陆登陆点为上海(中国电信)和青

HIVE JDBC连接详解

package org.conan.myhadoop.mr; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class HiveJDBCConnection {     private static String driverName = "or

SQL Server 2008 R2:error 26 开启远程连接详解

在学习ASP.NET 过程用到新建数据集并远程连接sql server 2008 数据库,出现下面的错误: <--在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.     未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接.     (provider: SQL Network Interfaces, error: 26 - 定位指定的服务器/实例时出错)--> 因为sql server 2008默认是不允许远程连接的,sa

Oracle中左右外连接详解

数据表的连接有: 1.内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 2.外连接: 包括 (1)左外连接(左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不加限制) 3.自连接(连接发生在一张基表内)  以下是三种连接的区分:select a.studentno, a.studentname, b.classname      from students a, classes b      where a.classid(+) = b.classi