android中的HttpUrlConnection的使用之一

在我们之前学习Java的网络编程当中,我们已经见过HttpUrlConnection类的使用。HttpUrlConnect在Java是一个支持http特定的功能一个类,在许多的网络编程经常使用到它。今天我在这里记录的是android中使用HttpUrlConnection,之前我还学过使用异步加载来加载一个网站,它使用的原理同样是多线程,但是它使用的是用json来解析一个网站,而不是直接使用域名也就是网址来解析一个网站,而将要介绍的HttpUrlConnection是使用域名来解析一个网站的,当然它同时使用到了handler类,因为这个事例使用到了子线程来加载ui,主线程来更新ui。代码如下

xml代码

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     tools:context="com.example.android_http.MainActivity" >
 7     <WebView
 8         android:id="@+id/webview"
 9         android:layout_width="fill_parent"
10         android:layout_height="fill_parent"
11         />
12
13 </LinearLayout>

从上面的xml中可以看出,我们只用了一个控件,那就是WebView。webview在加载网站当中自有它自己的妙处。

java代码

1.首先是Mainactivity类

 1 package com.example.android_http;
 2
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.os.Handler;
 6 import android.webkit.WebView;
 7
 8 public class MainActivity extends Activity {
 9     private WebView webview = null;
10     private Handler handler = new Handler();
11     @Override
12     protected void onCreate(Bundle savedInstanceState) {
13         super.onCreate(savedInstanceState);
14         setContentView(R.layout.activity_main);
15         webview = (WebView) findViewById(R.id.webview);
16         new HttpThread("http://www.baidu.com", webview, handler).start();
17     }
18
19 }

2.其次是HttpThread类,这个继承类Thread类,创建了一个子线程来加载网页

 1 package com.example.android_http;
 2
 3 import java.io.BufferedReader;
 4 import java.io.IOException;
 5 import java.io.InputStreamReader;
 6 import java.net.HttpURLConnection;
 7 import java.net.MalformedURLException;
 8 import java.net.ProtocolException;
 9 import java.net.URL;
10
11 import javax.net.ssl.HttpsURLConnection;
12
13 import android.os.Handler;
14 import android.webkit.WebView;
15
16 public class HttpThread  extends Thread{
17     private String url = null;
18     private WebView webview = null;
19     private Handler handler = null;
20     public HttpThread(String url, WebView webview, Handler handler)
21     {
22         this.handler = handler;
23         this.url = url;
24         this.webview = webview;
25     }
26     @Override
27     public void run() {
28         /*
29          * 关于HttpUrlConnection的使用,有什么不懂,请回去认真复习一下Java的网络编程
30          */
31         HttpURLConnection httpurlconnection = null;
32         try {
33             URL url = new URL(this.url);
34             httpurlconnection = (HttpURLConnection) url.openConnection();
35         } catch (MalformedURLException e) {
36             // TODO Auto-generated catch block
37             e.printStackTrace();
38         } catch (IOException e) {
39             // TODO Auto-generated catch block
40             e.printStackTrace();
41         }
42         //允许超时5秒
43         try {
44             httpurlconnection.setReadTimeout(5000);
45             //以get的方式与服务器相连接
46             httpurlconnection.setRequestMethod("GET");
47         } catch (ProtocolException e) {
48             // TODO Auto-generated catch block
49             e.printStackTrace();
50         }
51         final StringBuffer sb = new StringBuffer();
52         String str = null;
53         try {
54             BufferedReader br = new BufferedReader(new InputStreamReader(httpurlconnection.getInputStream()));
55             try {
56                 while((str = br.readLine()) != null)
57                 {
58                     sb.append(str);
59                 }
60             } catch (IOException e) {
61                 // TODO Auto-generated catch block
62                 e.printStackTrace();
63             }
64         } catch (IOException e) {
65             // TODO Auto-generated catch block
66             e.printStackTrace();
67         }
68         handler.post(new Runnable() {
69
70             public void run() {
71                 //第一个参数表示的是需要加载的数据--这个先前已经在输入流读入到了sb中
72                 //第二参数表示的是需要加载网站的编码格式--百度的编码格式就是如此
73                 /*
74                  * 需要注意的是:
75                  * loaddata不加载图片,如果想要加载图片,请使用loadDataWithBaseURL
76                  */
77                 webview.loadData(sb.toString(), "text/html;charset=utf-8", null);
78
79             }
80         });
81     }
82
83 }
时间: 2024-10-22 23:01:33

android中的HttpUrlConnection的使用之一的相关文章

android中的HttpURLConnection和HttpClient实现app与pc数据交互

自学android的这几天很辛苦,但是很满足,因为每当学到一点点知识点都会觉得很开心,觉得今天是特别有意义的,可能这个就是一种莫名的热爱吧. 下面来说说今天学习的HttpURLConnection和HttpClient的区别吧,其实这2种都能进行客户端和服务器的数据交互,只是HttpClient封装的更完全. 先看下案例吧 第一种HttpURLConnection访问服务器: 客服端代码: package com.example.demo01; import java.io.IOExceptio

Android中,HttpURLConnection与Apache的DefaultHttpClient哪个更被推荐使用?

在Android中,请求网络资源的方式包含了:HttpURLConnection和Apache的DefaultHttpClient.那么,这两个方式哪个更被推荐使用呢?Android官方文档为我们推荐HttpURLConnection,而理由是什么呢? 在Android 4.0,为HttpURLConnection增加了一个response cache(响应缓存),这是一个很好的减少http请求次数的机制,Android官方推荐使用HttpURLConnection而不是Apache的Defau

Android中使用HttpURLConnection实现GET POST JSON数据与下载图片

Android6.0中把Apache HTTP Client所有的包与类都标记为deprecated不再建议使用 所有跟HTTP相关的数据请求与提交操作都通过HttpURLConnection类实现,现实是 很多Android开发者一直都Apache HTTP Client来做andoird客户端与后台HTTP接口数 据交互,本人刚刚用HttpURLConnection做了一个android的APP,不小心踩到了几个 坑,总结下最常用的就通过HttpURLConnection来POST提交JSO

Android中使用HttpURLConnection和HttpClient实现GET和POST请求访问网络

HttpURLConnection中的GET import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net

android中的HttpUrlConnection的使用之三

这一次, 我写的是关于web服务器在eclipse for JAVAEE 上面搭建和使用HttpUrlConnection来进行简单的数据传输. 1.首先我们下载javaEE,在eclipse的官网就能下载得到.JAVAEE的好处在于,它可以进行简单的服务器的搭建,因为软件里面就有相关的插件. 关于插件的使用,在此我简单的说明一下:当我们把JAVA EE安装完成过后,打开在Windows选项中选择preferences,在选择Server下面的RunTime Environments.这里最主要

[Android基础]Android中使用HttpURLConnection

HttpURLConnection继承了URLConnection,因此也能够向指定站点发送GET请求.POST请求.它在URLConnetion的基础上提供了例如以下便捷的方法. int getResponseCode():获取server的响应代码. String getResponseMessage():获取server的訪问信息. String getRequestMethod():获取发送请求的方法. void setRequestMethod(String method):设置发送请

android 中设置HttpURLConnection 超时并判断是否超时

设置超时: URL url1 = new URL(url); HttpURLConnection conn = (HttpURLConnection) url1.openConnection(); conn.setRequestMethod("POST"); conn.setConnectTimeout(3000); //3s conn.setReadTimeout(3000); //3s conn.setDoOutput(true); 本来以为设置了超时程序就会自动返回,不会有异常了

android中的HttpUrlConnection的使用之二

httpUrlConnection主要用于网络传输当中,前面已经提及到了使用HttpUrlConnection来加载一个网站,这里我记录一下:用它在网络上下载一张图片并且加载到imageview当中.我们需要注意的是:当前很多网站上的图片传输的模式主要分两种:1.一是加密传输,使用HttpsUrlConnection进行链接:2.而是非加密传输,使用HttpUrlConnection来传输.代码如下(非加密传输): xml代码 1 <LinearLayout xmlns:android="

android中的HttpUrlConnection的使用之五

在使用之三中,我简单的介绍一下,get方式传递数据,而这里我将简单的介绍一下post方式.至于get方式与post方式有什么不同,我先卖一个关子,等我先把两个方式的关键代码贴出来,我再来说明这两种方式的不同和优缺点. java代码(首先说明一下,下面的代码都是客户端的代码,也就是手机端的代码) get方式的代码(出自使用之三) 1 private void DoGet() throws Exception 2 { 3 Log.i("main", "1"); 4 ur