Android 网络编程之HttpURLConnection
利用HttpURLConnection对象,我们可以从网络中获取网页数据.
02 |
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); |
03 |
conn.setConnectTimeout( 6 * 1000 ); //设置连接超时 |
04 |
if (conn.getResponseCode() != 200 ) throw new RuntimeException( "请求url失败" ); |
05 |
InputStream is = conn.getInputStream(); //得到网络返回的输入流 |
06 |
String result = readData(is, "GBK" ); |
08 |
System.out.println(result); |
09 |
//第一个参数为输入流,第二个参数为字符集编码 |
10 |
public static String readData(InputStream inSream, String charsetName) throws Exception{ |
11 |
ByteArrayOutputStream outStream = new ByteArrayOutputStream(); |
12 |
byte [] buffer = new byte [ 1024 ]; |
14 |
while ( (len = inSream.read(buffer)) != - 1 ){ |
15 |
outStream.write(buffer, 0 , len); |
17 |
byte [] data = outStream.toByteArray(); |
20 |
return new String(data, charsetName); |
利用HttpURLConnection对象,我们可以从网络中获取文件数据.
02 |
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); |
03 |
conn.setConnectTimeout( 6 * 1000 ); |
04 |
if (conn.getResponseCode() != 200 ) throw new RuntimeException( "请求url失败" ); |
05 |
InputStream is = conn.getInputStream(); |
06 |
readAsFile(is, "Img269812337.jpg" ); |
08 |
public static void readAsFile(InputStream inSream, File file) throws Exception{ |
09 |
FileOutputStream outStream = new FileOutputStream(file); |
10 |
byte [] buffer = new byte [ 1024 ]; |
12 |
while ( (len = inSream.read(buffer)) != - 1 ){ |
13 |
outStream.write(buffer, 0 , len); |
利用HttpURLConnection对象,我们可以向网络发送请求参数.
02 |
Map<String, String> requestParams = new HashMap<String, String>(); |
03 |
requestParams.put( "age" , "12" ); |
04 |
requestParams.put( "name" , "中国" ); |
05 |
StringBuilder params = new StringBuilder(); |
06 |
for (Map.Entry<String, String> entry : requestParams.entrySet()){ |
07 |
params.append(entry.getKey()); |
09 |
params.append(URLEncoder.encode(entry.getValue(), "UTF-8" )); |
12 |
if (params.length() > 0 ) params.deleteCharAt(params.length() - 1 ); |
13 |
byte [] data = params.toString().getBytes(); |
14 |
URL realUrl = new URL(requestUrl); |
15 |
HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection(); |
16 |
conn.setDoOutput( true ); //发送POST请求必须设置允许输出 |
17 |
conn.setUseCaches( false ); //不使用Cache |
18 |
conn.setRequestMethod( "POST" ); |
19 |
conn.setRequestProperty( "Connection" , "Keep-Alive" ); //维持长连接 |
20 |
conn.setRequestProperty( "Charset" , "UTF-8" ); |
21 |
conn.setRequestProperty( "Content-Length" , String.valueOf(data.length)); |
22 |
conn.setRequestProperty( "Content-Type" , "application/x-www-form-urlencoded" ); |
23 |
DataOutputStream outStream = new DataOutputStream(conn.getOutputStream()); |
24 |
outStream.write(data); |
26 |
if ( conn.getResponseCode() == 200 ){ |
27 |
String result = readAsString(conn.getInputStream(), "UTF-8" ); |
29 |
System.out.println(result); |
利用HttpURLConnection对象,我们可以向网络发送xml数据.
01 |
StringBuilder xml = new StringBuilder(); |
02 |
xml.append( "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" ); |
03 |
xml.append( "<M1 V=10000>" ); |
04 |
xml.append( "<U I=1 D=\"N73\">中国</U>" ); |
06 |
byte [] xmlbyte = xml.toString().getBytes( "UTF-8" ); |
08 |
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); |
09 |
conn.setConnectTimeout( 6 * 1000 ); |
10 |
conn.setDoOutput( true ); //允许输出 |
11 |
conn.setUseCaches( false ); //不使用Cache |
12 |
conn.setRequestMethod( "POST" ); |
13 |
conn.setRequestProperty( "Connection" , "Keep-Alive" ); //维持长连接 |
14 |
conn.setRequestProperty( "Charset" , "UTF-8" ); |
15 |
conn.setRequestProperty( "Content-Length" , String.valueOf(xmlbyte.length)); |
16 |
conn.setRequestProperty( "Content-Type" , "text/xml; charset=UTF-8" ); |
17 |
DataOutputStream outStream = new DataOutputStream(conn.getOutputStream()); |
18 |
outStream.write(xmlbyte); //发送xml数据 |
20 |
if (conn.getResponseCode() != 200 ) throw new RuntimeException( "请求url失败" ); |
21 |
InputStream is = conn.getInputStream(); //获取返回数据 |
22 |
String result = readAsString(is, "UTF-8" ); |
- android 网络编程之HttpURLConnection与HttpClient使用与封装
1.写在前面 大部分andriod应用需要与服务器进行数据交互,HTTP.FTP.SMTP或者是直接基于SOCKET编程都可以进行数据交互,但是HTTP必然是使用最广泛的协议. 本文并 ...
- android网络编程之HttpUrlConnection的讲解--实现文件的断点上传
1.网络开发不要忘记在配置文件中添加访问网络的权限 <uses-permission android:name="android.permission.INTERNET"/& ...
- android网络编程之HttpUrlConnection的讲解--实现文件断点下载
1.没有实现服务器端,下载地址为网上的一个下载链接. 2.网络开发不要忘记在配置文件中添加访问网络的权限 <uses-permission android:name="android. ...
- android网络编程之HttpUrlConnection的讲解--上传大文件
1.服务器后台使用Servlet开发,这里不再介绍. 2.网络开发不要忘记在配置文件中添加访问网络的权限 <uses-permission android:name="android. ...
- android网络编程之HttpUrlConnection的讲解--POST请求
1.服务器后台使用Servlet开发,这里不再介绍. 2.网络开发不要忘记在配置文件中添加访问网络的权限 <uses-permission android:name="android. ...
- android网络编程之HttpUrlConnection的讲解--GET请求
1.服务器后台使用Servlet开发,这里不再介绍. 2.测试机通过局域网链接到服务器上,可以参考我的博客:http://www.cnblogs.com/begin1949/p/4905192.htm ...
- android网络编程之HttpUrlConnection的讲解--DownLoadManager基本用法
1.DownLoadManager是Android用系统服务(Service)的方式来优化处理长时间的下载操作的一个工具类.避免了我们去处理多线程,通知栏等等. 2.不要忘记添加权限 <uses ...
- Android网络编程之HttpClient运用
Android网络编程之HttpClient运用 在 Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们 ...
- Android网络编程之Http通信
Android中提供的HttpURLConnection和HttpClient接口可以用来开发HTTP程序.以下是本人在学习中的总结与归纳.1. HttpURLConnection接口 首先需要 ...
随机推荐
- 1991: C语言实验——大小写转换
1991: C语言实验——大小写转换 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 183 Solved: 109[Submit][Status][We ...
- linux_1
注: 创建软连接: "ln -s xxx 路径1" 在路径1创建xxx的软连接 特点: 1.文件类型 l 2.相当于windows的快捷方式 创建硬链接: "ln xxx ...
- shell脚本,awk实现行列转换
[root@localhost study]# cat file 张三 语文 张三 数学 李四 语文 李四 数学 王五 语文 王五 数学 王五 英语 怎么实现为下面的排序??? 语文 数学 语文 数学 ...
- iterator方法和for方法 遍历数据库user表结果集ResultSet
首先,把连接数据库的语句做成工具类,因为会一直用到这几句 代码如下: package com.swift.jdbc; import java.sql.Connection; import java.s ...
- ios之UISegmentedcontol
初始化UISegmentedControl NSArray *arr = [[NSArray alloc]initWithObjects:@"轻拍",@"长按" ...
- 51nod 1265 四点共面——计算几何
题目链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1265 以其中某一点向其它三点连向量,若四点共面,这三个向量定义的平行六面体 ...
- 009 CSS选择器
CSS选择器 一.基础选择器 1.通配选择器 * { border: solid; } 匹配文档中所有标签:通常指html.body及body中所有显示类的标签 2.标签选择器 div { backg ...
- 本地开发环境中部署已经写好的magento2.0项目
环境:apache2.4.25+php7.0.16+mysql5.7 (注意版本搭配,详细可以看magento2.0官网看配置) apache最好使用80端口,host文件配置本地虚拟域名 php.i ...
- 《嵌入式linux应用程序开发标准教程》笔记——7.进程控制开发
进程是系统资源的最小单元,很重要. 7.1 linux进程的基本概念 定义:一个程序的一次执行过程,同时也是资源分配的最小单元.程序是静态的,而进程是动态的. 进程控制块:linux系统用进程控制块描 ...
- python中的list、tuple和dictionary
列表 列表是python中最基本的数据结构之一,并且列表的数据项不需要具有相同的数据类型,创建一个列表,只需把逗号分隔的不同数据项使用方括号括起来即可.具体的定义式如下: list=['变量1','变 ...