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); |
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 ); |
17 |
conn.setUseCaches( false ); |
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 ); |
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); |
20 |
if (conn.getResponseCode() != 200 ) throw new RuntimeException( "请求url失败" ); |
21 |
InputStream is = conn.getInputStream(); |
22 |
String result = readAsString(is, "UTF-8" ); |