HttpURLConnection继承了URLConnection,因此也可以向指定网站发送GET请求、POST请求。它在URLConnetion的基础上提供了如下便捷的方法。

int getResponseCode():获取服务器的响应代码。
String getResponseMessage():获取服务器的访问信息。
String getRequestMethod():获取发送请求的方法。
void setRequestMethod(String method):设置发送请求的方法。
我们通过两个例子来体会一下:
一、将网站的内容显示在界面上:
1、创建一个WebView

<WebView  android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" />

2、MainActivity.java

public class MainActivity extends Activity {    private WebView webview;    //通过Handler在子线程更新主界面的UI    private Handler handler = new Handler();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        webview = (WebView) findViewById(R.id.webView);        new HttpThread("http://www.sina.com", webview, handler).start();    }}

3、创建一个子线程

public class HttpThread extends Thread {    private String url;    private WebView webview;    private Handler handler;    //通过构造函数传三个参数    public HttpThread(String url, WebView webView, Handler handler) {        this.url = url;        this.webview = webView;        this.handler = handler;    }    }    @Override    public void run() {        try {            URL httpUri = new URL(url);            HttpURLConnection conn = (HttpURLConnection) httpUri.openConnection();            conn.setReadTimeout(5000);            conn.setRequestMethod("GET");               final StringBuffer sb = new StringBuffer();            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));            String str;            while((str = reader.readLine()) != null)            {                sb.append(str);            }            handler.post(new Runnable() {                @Override                public void run() {                //将数据加载到webview中                    webview.loadData(sb.toString(), "text/html;charset=utf-8", null);                }            });        } catch (MalformedURLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}

4、在AndroidManifest中添加权限:
android:name=”android.permission.INTERNET”

二、根据URL地址下载一张图片
1、创建一个webview

<ImageView android:id="@+id/imageView1" android:layout_width="match_parent" android:layout_height="match_parent"/>

2、MainActivity.java

public class MainActivity extends Activity {    private Handler handler = new Handler();    private ImageView imageView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        imageView = (ImageView) findViewById(R.id.imageView1);        new     HttpThread("http://img5.duitang.com/uploads/item/201410/23/20141023211631_VKmfz.jpeg", imageView, handler).start();    }

3、创建一个子线程

public class HttpThread extends Thread { private String url; private Handler handler; private ImageView imageView; public HttpThread(String url, ImageView imageView, Handler handler) { this.url = url; this.imageView = imageView; this.handler = handler; } @Override public void run() { try { URL httpUri = new URL(url); HttpURLConnection conn = (HttpURLConnection) httpUri.openConnection(); conn.setReadTimeout(5000); conn.setRequestMethod("GET"); //设置可以读取到输入流 conn.setDoInput(true); InputStream in = conn.getInputStream(); FileOutputStream out = null; String fileName = String.valueOf(System.currentTimeMillis()); File downloadFile = null; if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { //获得SDcard的目录文件 File parent = Environment.getExternalStorageDirectory(); downloadFile = new File(parent, fileName); out = new FileOutputStream(downloadFile); } //缓冲区 byte[] b = new byte[2 * 1024]; int len; if(out != null) { while((len = in.read(b)) != -1) { out.write(b, 0, len); } } final Bitmap bitmap = BitmapFactory.decodeFile(downloadFile.getAbsolutePath()); handler.post(new Runnable() { @Override public void run() { imageView.setImageBitmap(bitmap); } }); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 

4、在AndroidManifest中添加权限:
android:name=”android.permission.WRITE_EXTERNAL_STORAGE”

这样下载的图片就显示在界面上了。

更多相关文章

  1. android中ContactsContract获取联系人的方法
  2. android之Handler的使用,回到主线程更新UI的四种方法
  3. Android知识点总结(十五) Android(安卓)MVP 简易模型
  4. Android(安卓)自定义ContentProvider和ContentObserver的完整使
  5. 【Android(安卓)应用开发】 自定义组件 宽高适配方法, 手势监听
  6. Menu
  7. Android在任意位置由Notification跳向指定fragment
  8. 面试题总结(2018.7.26开始,持续更新中)
  9. Android(安卓)对话框(Dialog)

随机推荐

  1. android xml注意事项
  2. Android中级教程之----Log图文详解(Log.v
  3. Android 在安装完成界面,点击打开应用程序
  4. Android代码混淆配置(Proguard文件解析)
  5. 简述Android触摸屏手势识别
  6. android软键盘的显示后隐藏
  7. android悬浮按钮(Floating action button)
  8. Android输入法之——如何在代码中强制切
  9. Flutter学习笔记第一天:flutter的安装和初
  10. 如何在Android(安卓)Studio中添加Recycle