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接口 首先需要 ...
随机推荐
- MIPS——循环语句
有关指令 add $t1,$t2,$t3 #寄存器+寄存器,$t1 = $t2 + $t3 add $t1,$t2,immediate #寄存器+立即数,$t1 = $t2 + immediate b ...
- 2、Task 使用 ContinueWith 而不要使用 Wait
1.线程自旋:在阻塞线程的时候为了等待解锁(访问临界资源)(Sleep). 2.上下文切换:将处理器当前线程的状态保存到操作系统内部的线程对象中,然后再挑出一个就绪的线程,把上下文信息传递给处理器,然 ...
- jQuery-AJAX简介
AJAX是浏览器后台与服务器交换数据的技术,无须加载整个页面的情况下,对页面中的局部进行更新. AJAX=异步的JavaScript与XML(Asynchronous JavaScript and X ...
- 移动产品设计之ios系统的导航
做道题:[不定项选择题] OS中导航设计模式有几种? A.平铺导航 B.标签导航 C.树形导航 D.模态视图导航 正确答案:A B C 讲解: 导航始终是产品设计的重头戏,往往产品设计中90%的事情就 ...
- PAT 乙级 1010
题目 题目地址:PAT 乙级 1010 思路 首先一个问题就是审题不清,导致代码返工了很多次,最后还没写对: 其次对于这道题来说每次输入一组数据之后就可以输出结果,太过机械地想要套用题目给出的输出样例 ...
- 【图论 动态规划拆点】luoguP3953 逛公园
经典的动态规划拆点问题. 题目描述 策策同学特别喜欢逛公园.公园可以看成一张 NN 个点 MM 条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口, NN 号点是公园的出口,每条边有一个非负 ...
- redux form
纯粹使用react进行表单校验: class MyForm extends React.Component{ constructor(props){ super(props) this.onAddrC ...
- js解析器
1>js的预解析 找var function 参数等 所有的变量,在正式运行代码前,都提前赋了一个值:未定义 所有的函数,在正式运行代码前,都是整个函数块. 遇到重名的:只留一个 如果变量与函数 ...
- (转)iOS 常用宏定义
#ifndef MacroDefinition_h #define MacroDefinition_h //-------------------获取设备大小------------------- ...
- Verilog学习笔记基本语法篇(二)·········运算符
Verilog HDL的语言的运算符的范围很广,按照其功能大概可以分为以下几类: (1)算术运算符 +,-,*,/,% 优先顺序 !~ * / % + - << > ...