用httpURLconnection来进行网络访问-天气预报信息获取实例

1.网络权限的设置

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.bwf.a22_http_01"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.bwf.a22_http_01.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <!-- 网络权限 -->
    <uses-permission android:name="android.permission.INTERNET"/>
</manifest>

 

 1 package com.bwf.a22_http_01;
 2 
 3 import java.io.InputStream;
 4 import java.net.HttpURLConnection;
 5 import java.net.MalformedURLException;
 6 import java.net.URL;
 7 import java.net.URLEncoder;
 8 import java.util.ArrayList;
 9 
10 import javax.net.ssl.HttpsURLConnection;
11 
12 import android.net.Uri;
13 import android.os.Bundle;
14 import android.app.Activity;
15 import android.view.Menu;
16 import android.view.MenuItem;
17 import android.widget.TextView;
18 /**
19  * 使用HttpUrlConnection进行网络请求的基本流程
20  *         1. 创建URL对象url,用于指定要请求的资源
21  *         2. 通过url的openConnection方法来打开连接
22  *         3. 可以对连接进行相应设置,请求方式、请求超时等
23  *         4. 可以通过getResponsdeCode方法获取响应码
24  *         5. 如果连接是正常的,就可以获取通过getInputStream网络流
25  *         6. 处理读到的数据
26  *         7. 关闭连接
27  * */
28 public class MainActivity extends Activity {
29     TextView tv;
30     
31     @Override
32     protected void onCreate(Bundle savedInstanceState) {
33         super.onCreate(savedInstanceState);
34         setContentView(R.layout.activity_main);
35         
36         tv = (TextView) findViewById(R.id.tv);
37     }
38 
39     @Override
40     public boolean onCreateOptionsMenu(Menu menu) {
41         // Inflate the menu; this adds items to the action bar if it is present.
42         getMenuInflater().inflate(R.menu.main, menu);
43         return true;
44     }
45 
46     @Override
47     public boolean onOptionsItemSelected(MenuItem item) {
48         switch (item.getItemId()) {
49         case R.id.action_download:
50             new Thread(new Runnable() {
51                 
52                 @Override
53                 public void run() {
54                     URL url;
55                     try {
56                         //url = new URL("http://www.sina.com/");
57                         String str1 = "http://wthrcdn.etouch.cn/weather_mini?city=";
58                         String strUrl = str1 + URLEncoder.encode("成都", "UTF-8");
59                         url = new URL(strUrl);
60                         HttpURLConnection conn = (HttpURLConnection) url.openConnection();
61                         conn.setRequestMethod("GET");
62                         conn.setReadTimeout(5 * 1000);
63                         int code = conn.getResponseCode();
64                         
65                         if(code == 200){
66                             InputStream in = conn.getInputStream();
67                             byte[] buffer = new byte[1024 * 5];
68                             int len = in.read(buffer);
69                             final String str = new String(buffer, 0, len);
70                             
71                             runOnUiThread(new Runnable() {
72                                 
73                                 @Override
74                                 public void run() {
75                                     tv.setText(str);
76                                 }
77                             });
78                             
79                             conn.disconnect();
80                         }
81                     } catch (Exception e) {
82                         // TODO Auto-generated catch block
83                         e.printStackTrace();
84                     }
85                 }
86             }).start();
87             break;
88 
89         default:
90             break;
91         }
92         return super.onOptionsItemSelected(item);
93     }
94 }

 

posted on 2015-10-19 10:40  敬的男人  阅读(673)  评论(0)    收藏  举报