<div id="article_content" class="article_content tracking-ad" data-mod="popu_307" data-dsm="post">
<p><br>
</p>
<p><span style="font-size:14px"><span style="white-space:pre"></span>若想使自己的android运用联网,必须要在AndroidManifest.xml中获取联网的权限,(即在里面添加 <uses-permission android:name="android.permission.INTERNET" />代码)</span></p>
<p><span style="font-size:14px"><span style="white-space:pre"></span>如下图所示:</span></p>
<p><span style="font-size:14px"><span style="white-space:pre"><img src="https://img-blog.youkuaiyun.com/20140902163430398?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTU5NjgxMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="如下图所示:"></span></span></p>
<p><span style="font-size:14px"><span style="white-space:pre"><br>
</span></span></p>
<p><span style="font-size:14px"><span style="white-space:pre"><span style="white-space:pre"></span>然后</span>就是写页面的代码了,(即:本文中的activity_main.xml文件)</span></p>
<p><span style="font-size:14px"><span style="white-space:pre"></span></span></p>
<p></p>
<div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><b>[html]</b> <a href="#" class="ViewSource" title="view plain" οnclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" target="_blank">view plain</a><span data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" οnclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" target="_blank">copy</a><div style="position: absolute; left: 457px; top: 800px; width: 19px; height: 18px; z-index: 99;"><embed id="ZeroClipboardMovie_1" src="http://static.blog.youkuaiyun.com/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="19" height="18" name="ZeroClipboardMovie_1" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=1&width=19&height=18" wmode="transparent"></div></span><span data-mod="popu_169"> <a href="#" class="PrintSource" title="print" οnclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" target="_blank">print</a></span><a href="#" class="About" title="?" οnclick="dp.sh.Toolbar.Command('About',this);return false;" target="_blank">?</a></div></div><ol start="1" class="dp-xml"><li class="alt"><span><span class="tag"><</span><span class="tag-name">ScrollView</span><span> </span><span class="attribute">xmlns:android</span><span>=</span><span class="attribute-value">"http://schemas.android.com/apk/res/android"</span><span> </span></span></li><li class=""><span> <span class="attribute">xmlns:tools</span><span>=</span><span class="attribute-value">"http://schemas.android.com/tools"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">android:layout_width</span><span>=</span><span class="attribute-value">"match_parent"</span><span> </span></span></li><li class=""><span> <span class="attribute">android:layout_height</span><span>=</span><span class="attribute-value">"match_parent"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">tools:context</span><span>=</span><span class="attribute-value">".MainActivity"</span><span> </span><span class="tag">></span><span> </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">LinearLayout</span><span> </span></span></li><li class=""><span> <span class="attribute">android:layout_width</span><span>=</span><span class="attribute-value">"match_parent"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">android:layout_height</span><span>=</span><span class="attribute-value">"wrap_content"</span><span> </span></span></li><li class=""><span> <span class="attribute">android:orientation</span><span>=</span><span class="attribute-value">"vertical"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">android:padding</span><span>=</span><span class="attribute-value">"5dp"</span><span> </span><span class="tag">></span><span> </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">EditText</span><span> </span></span></li><li class=""><span> <span class="attribute">android:id</span><span>=</span><span class="attribute-value">"@+id/edturl"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">android:layout_width</span><span>=</span><span class="attribute-value">"match_parent"</span><span> </span></span></li><li class=""><span> <span class="attribute">android:layout_height</span><span>=</span><span class="attribute-value">"wrap_content"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">android:hint</span><span>=</span><span class="attribute-value">"输入网站"</span><span> </span></span></li><li class=""><span> <span class="attribute">android:inputType</span><span>=</span><span class="attribute-value">"textUri"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">android:singleLine</span><span>=</span><span class="attribute-value">"true"</span><span> </span><span class="tag">/></span><span> </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">Button</span><span> </span></span></li><li class=""><span> <span class="attribute">android:id</span><span>=</span><span class="attribute-value">"@+id/requesthtml"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">android:layout_width</span><span>=</span><span class="attribute-value">"wrap_content"</span><span> </span></span></li><li class=""><span> <span class="attribute">android:layout_height</span><span>=</span><span class="attribute-value">"wrap_content"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">android:text</span><span>=</span><span class="attribute-value">"获取html代码"</span><span> </span><span class="tag">/></span><span> </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">EditText</span><span> </span></span></li><li class=""><span> <span class="attribute">android:id</span><span>=</span><span class="attribute-value">"@+id/edthttp"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">android:layout_width</span><span>=</span><span class="attribute-value">"fill_parent"</span><span> </span></span></li><li class=""><span> <span class="attribute">android:layout_height</span><span>=</span><span class="attribute-value">"wrap_content"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">android:hint</span><span>=</span><span class="attribute-value">"这里显示的是你所输入的网站的HTML代码"</span><span> </span><span class="tag">/></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">LinearLayout</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="tag"></</span><span class="tag-name">ScrollView</span><span class="tag">></span><span> </span></span></li></ol></div><pre name="code" class="html" style="display: none;"><ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="5dp" >
<EditText
android:id="@+id/edturl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="输入网站"
android:inputType="textUri"
android:singleLine="true" />
<Button
android:id="@+id/requesthtml"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="获取html代码" />
<EditText
android:id="@+id/edthttp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="这里显示的是你所输入的网站的HTML代码" />
</LinearLayout>
</ScrollView></pre><br>
<br>
<p></p>
<p><span style="font-size:14px"><span style="white-space:pre"></span>重点来了,那是java文件的代码,不过,在这说一下注意的东西:在android 2.3版本以上,不能直接在主线程上联网,否则会抛出 <span style="font-family:宋体; font-size:14px; line-height:28px; text-indent:28px"><span style="color:#ff0000">android.os.NetworkOnMainThreadException</span><span style="color:#ffcccc"></span></span><span style="font-family:宋体; line-height:28px; text-indent:28px">的错误,这是因为在联网的过程中,程序会发送请求以便获取数据,但假如直接在主线程发送请求的话,页面就会卡住,进入假死状态。android后来版本为了预防这种情况,于是。。。。</span></span></p>
<p><br>
</p>
<p><span style="font-size:14px"><span style="white-space:pre"></span>因此,我们联网需要异步来操作。因为我之前都是用Thread的,现在想换换其它东西,就用了AsyncTask。</span></p>
<p><span style="font-size:14px"><br>
</span></p>
<p><span style="font-size:14px"><span style="white-space:pre"></span>于是Java文件分为两部分,第一部分是控制页面效果和监听的,第二部分是用来执行异步操作。</span></p>
<p><span style="font-size:14px"><br>
</span></p>
<p><span style="font-size:14px"><span style="white-space:pre"></span>第一部分代码如下:</span></p>
<p><span style="font-size:14px"></span></p>
<div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><b>[java]</b> <a href="#" class="ViewSource" title="view plain" οnclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" target="_blank">view plain</a><span data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" οnclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" target="_blank">copy</a><div style="position: absolute; left: 457px; top: 1761px; width: 19px; height: 18px; z-index: 99;"><embed id="ZeroClipboardMovie_2" src="http://static.blog.youkuaiyun.com/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="19" height="18" name="ZeroClipboardMovie_2" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=2&width=19&height=18" wmode="transparent"></div></span><span data-mod="popu_169"> <a href="#" class="PrintSource" title="print" οnclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" target="_blank">print</a></span><a href="#" class="About" title="?" οnclick="dp.sh.Toolbar.Command('About',this);return false;" target="_blank">?</a></div></div><ol start="1" class="dp-j"><li class="alt"><span><span class="keyword">import</span><span> android.app.Activity; </span></span></li><li class=""><span><span class="keyword">import</span><span> android.os.Bundle; </span></span></li><li class="alt"><span><span class="keyword">import</span><span> android.view.View; </span></span></li><li class=""><span><span class="keyword">import</span><span> android.widget.Button; </span></span></li><li class="alt"><span><span class="keyword">import</span><span> android.widget.EditText; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> MainActivity </span><span class="keyword">extends</span><span> Activity { </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="comment">// 定义组件</span><span> </span></span></li><li class=""><span> <span class="keyword">private</span><span> EditText edtURL; </span></span></li><li class="alt"><span> <span class="keyword">private</span><span> EditText edtHTTP; </span></span></li><li class=""><span> <span class="keyword">private</span><span> Button btnRequest; </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="keyword">private</span><span> String strURL;</span><span class="comment">// 用于存储网站地址</span><span> </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="keyword">private</span><span> MyTask myTask; </span></span></li><li class="alt"><span> <span class="annotation">@Override</span><span> </span></span></li><li class=""><span> <span class="keyword">protected</span><span> </span><span class="keyword">void</span><span> onCreate(Bundle savedInstanceState) { </span></span></li><li class="alt"><span> <span class="keyword">super</span><span>.onCreate(savedInstanceState); </span></span></li><li class=""><span> setContentView(R.layout.activity_main); </span></li><li class="alt"><span> </span></li><li class=""><span> <span class="comment">// 初始化组件</span><span> </span></span></li><li class="alt"><span> edtURL = (EditText) findViewById(R.id.edturl); </span></li><li class=""><span> edtHTTP = (EditText) findViewById(R.id.edthttp); </span></li><li class="alt"><span> btnRequest = (Button) findViewById(R.id.requesthtml); </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="comment">// 监听获取html代码的按钮</span><span> </span></span></li><li class=""><span> btnRequest.setOnClickListener(<span class="keyword">new</span><span> View.OnClickListener() { </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="annotation">@Override</span><span> </span></span></li><li class="alt"><span> <span class="keyword">public</span><span> </span><span class="keyword">void</span><span> onClick(View v) { </span></span></li><li class=""><span> <span class="keyword">if</span><span> (!(strURL = edtURL.getText().toString()).equals(</span><span class="string">""</span><span>)) { </span></span></li><li class="alt"><span> <span class="comment">//实例myTask对象</span><span> </span></span></li><li class=""><span> myTask = <span class="keyword">new</span><span> MyTask(edtHTTP); </span></span></li><li class="alt"><span> myTask.execute(strURL); </span></li><li class=""><span> } </span></li><li class="alt"><span> </span></li><li class=""><span> } </span></li><li class="alt"><span> }); </span></li><li class=""><span> } </span></li><li class="alt"><span> </span></li><li class=""><span>} </span></li></ol></div><pre name="code" class="java" style="display: none;">import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
// 定义组件
private EditText edtURL;
private EditText edtHTTP;
private Button btnRequest;
private String strURL;// 用于存储网站地址
private MyTask myTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化组件
edtURL = (EditText) findViewById(R.id.edturl);
edtHTTP = (EditText) findViewById(R.id.edthttp);
btnRequest = (Button) findViewById(R.id.requesthtml);
// 监听获取html代码的按钮
btnRequest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!(strURL = edtURL.getText().toString()).equals("")) {
//实例myTask对象
myTask = new MyTask(edtHTTP);
myTask.execute(strURL);
}
}
});
}
}</pre><br>
<span style="font-size:14px"><span style="white-space:pre"></span>第二部分代码:</span>
<p></p>
<p><span style="white-space:pre"></span></p>
<div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><b>[java]</b> <a href="#" class="ViewSource" title="view plain" οnclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" target="_blank">view plain</a><span data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" οnclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" target="_blank">copy</a><div style="position: absolute; left: 457px; top: 2628px; width: 19px; height: 18px; z-index: 99;"><embed id="ZeroClipboardMovie_3" src="http://static.blog.youkuaiyun.com/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="19" height="18" name="ZeroClipboardMovie_3" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=3&width=19&height=18" wmode="transparent"></div></span><span data-mod="popu_169"> <a href="#" class="PrintSource" title="print" οnclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" target="_blank">print</a></span><a href="#" class="About" title="?" οnclick="dp.sh.Toolbar.Command('About',this);return false;" target="_blank">?</a></div></div><ol start="1" class="dp-j"><li class="alt"><span><span class="keyword">import</span><span> java.io.BufferedReader; </span></span></li><li class=""><span><span class="keyword">import</span><span> java.io.IOException; </span></span></li><li class="alt"><span><span class="keyword">import</span><span> java.io.InputStreamReader; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> org.apache.http.HttpResponse; </span></span></li><li class=""><span><span class="keyword">import</span><span> org.apache.http.client.HttpClient; </span></span></li><li class="alt"><span><span class="keyword">import</span><span> org.apache.http.client.methods.HttpGet; </span></span></li><li class=""><span><span class="keyword">import</span><span> org.apache.http.impl.client.DefaultHttpClient; </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="keyword">import</span><span> com.xiaoyan.httpclienttest.R.integer; </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="keyword">import</span><span> android.os.AsyncTask; </span></span></li><li class="alt"><span><span class="keyword">import</span><span> android.widget.EditText; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="comment">/**</span> </span></li><li class=""><span><span class="comment"> * 用于异步操作来读取网页中HTML代码</span> </span></li><li class="alt"><span><span class="comment"> * </span> </span></li><li class=""><span><span class="comment"> * @author jianyan</span> </span></li><li class="alt"><span><span class="comment"> * </span> </span></li><li class=""><span><span class="comment"> */</span><span> </span></span></li><li class="alt"><span><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> MyTask </span><span class="keyword">extends</span><span> AsyncTask<String, integer, StringBuffer> { </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">private</span><span> EditText edtHTTP;</span><span class="comment">// 用于显示HTML代码</span><span> </span></span></li><li class=""><span> <span class="keyword">private</span><span> StringBuffer sbHTML;</span><span class="comment">// 用于储存HTML代码</span><span> </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="keyword">public</span><span> MyTask(EditText edtHTTP) { </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="keyword">this</span><span>.edtHTTP = edtHTTP; </span></span></li><li class="alt"><span> sbHTML = <span class="keyword">new</span><span> StringBuffer(); </span></span></li><li class=""><span> } </span></li><li class="alt"><span> </span></li><li class=""><span> <span class="comment">/**</span> </span></li><li class="alt"><span><span class="comment"> * doInBackground方法内部执行后台任务,不可在此方法内修改UI</span> </span></li><li class=""><span><span class="comment"> */</span><span> </span></span></li><li class="alt"><span> <span class="annotation">@Override</span><span> </span></span></li><li class=""><span> <span class="keyword">protected</span><span> StringBuffer doInBackground(String... params) { </span></span></li><li class="alt"><span> <span class="comment">// 初始化HTTP的客户端</span><span> </span></span></li><li class=""><span> HttpClient hc = <span class="keyword">new</span><span> DefaultHttpClient(); </span></span></li><li class="alt"><span> <span class="comment">// 实例化HttpGet对象</span><span> </span></span></li><li class=""><span> HttpGet hg = <span class="keyword">new</span><span> HttpGet(params[</span><span class="number">0</span><span>]); </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="keyword">try</span><span> { </span></span></li><li class="alt"><span> <span class="comment">// 让HTTP客户端已Get的方式请求数据,并把所得的数据赋值给HttpResponse的对象</span><span> </span></span></li><li class=""><span> HttpResponse hr = hc.execute(hg); </span></li><li class="alt"><span> <span class="comment">// 使用缓存的方式读取所返回的数据</span><span> </span></span></li><li class=""><span> BufferedReader br = <span class="keyword">new</span><span> BufferedReader(</span><span class="keyword">new</span><span> InputStreamReader(hr </span></span></li><li class="alt"><span> .getEntity().getContent())); </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="comment">// 读取网页所返回的HTML代码</span><span> </span></span></li><li class=""><span> String line = <span class="string">""</span><span>; </span></span></li><li class="alt"><span> sbHTML = <span class="keyword">new</span><span> StringBuffer(); </span></span></li><li class=""><span> <span class="keyword">while</span><span> ((line = br.readLine()) != </span><span class="keyword">null</span><span>) { </span></span></li><li class="alt"><span> sbHTML.append(line); </span></li><li class=""><span> } </span></li><li class="alt"><span> </span></li><li class=""><span> <span class="keyword">return</span><span> sbHTML; </span></span></li><li class="alt"><span> } <span class="keyword">catch</span><span> (IOException e) { </span></span></li><li class=""><span> </span></li><li class="alt"><span> edtHTTP.setText(<span class="string">"获取网页HTML代码出错!!!"</span><span>); </span></span></li><li class=""><span> } </span></li><li class="alt"><span> <span class="keyword">return</span><span> </span><span class="keyword">null</span><span>; </span></span></li><li class=""><span> } </span></li><li class="alt"><span> </span></li><li class=""><span> <span class="comment">/**</span> </span></li><li class="alt"><span><span class="comment"> * onPostExecute方法用于在执行完后台任务后更新UI,显示结果</span> </span></li><li class=""><span><span class="comment"> */</span><span> </span></span></li><li class="alt"><span> <span class="annotation">@Override</span><span> </span></span></li><li class=""><span> <span class="keyword">protected</span><span> </span><span class="keyword">void</span><span> onPostExecute(StringBuffer result) { </span></span></li><li class="alt"><span> <span class="comment">// 判断是否为null,若不为null,则在页面显示HTML代码</span><span> </span></span></li><li class=""><span> <span class="keyword">if</span><span> (result != </span><span class="keyword">null</span><span>) { </span></span></li><li class="alt"><span> edtHTTP.setText(result); </span></li><li class=""><span> } </span></li><li class="alt"><span> <span class="keyword">super</span><span>.onPostExecute(result); </span></span></li><li class=""><span> } </span></li><li class="alt"><span>} </span></li></ol></div><pre name="code" class="java" style="font-size: 14px; display: none;">import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import com.xiaoyan.httpclienttest.R.integer;
import android.os.AsyncTask;
import android.widget.EditText;
/**
* 用于异步操作来读取网页中HTML代码
*
* @author jianyan
*
*/
public class MyTask extends AsyncTask<String, integer, StringBuffer> {
private EditText edtHTTP;// 用于显示HTML代码
private StringBuffer sbHTML;// 用于储存HTML代码
public MyTask(EditText edtHTTP) {
this.edtHTTP = edtHTTP;
sbHTML = new StringBuffer();
}
/**
* doInBackground方法内部执行后台任务,不可在此方法内修改UI
*/
@Override
protected StringBuffer doInBackground(String... params) {
// 初始化HTTP的客户端
HttpClient hc = new DefaultHttpClient();
// 实例化HttpGet对象
HttpGet hg = new HttpGet(params[0]);
try {
// 让HTTP客户端已Get的方式请求数据,并把所得的数据赋值给HttpResponse的对象
HttpResponse hr = hc.execute(hg);
// 使用缓存的方式读取所返回的数据
BufferedReader br = new BufferedReader(new InputStreamReader(hr
.getEntity().getContent()));
// 读取网页所返回的HTML代码
String line = "";
sbHTML = new StringBuffer();
while ((line = br.readLine()) != null) {
sbHTML.append(line);
}
return sbHTML;
} catch (IOException e) {
edtHTTP.setText("获取网页HTML代码出错!!!");
}
return null;
}
/**
* onPostExecute方法用于在执行完后台任务后更新UI,显示结果
*/
@Override
protected void onPostExecute(StringBuffer result) {
// 判断是否为null,若不为null,则在页面显示HTML代码
if (result != null) {
edtHTTP.setText(result);
}
super.onPostExecute(result);
}
}
</pre>
<p></p>
<p style="font-size:14px"><span style="font-size:14px"><span style="white-space:pre"><br>
</span></span></p>
<p style="font-size:14px"><span style="font-size:14px"><span style="white-space:pre"><br>
</span></span></p>
<span style="font-size:14px"><span style="white-space:pre"></span>所有代码都在上面了,然后我们看看运行的效果:(测试机:中兴U808)</span>
<p><span style="font-size:14px"><span style="white-space:pre"><img src="https://img-blog.youkuaiyun.com/20140902170239943?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTU5NjgxMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="所有代码都在上面了,然后我们看看运行的效果:"><br>
</span></span></p>
<p><span style="font-size:14px"><span style="white-space:pre"><br>
</span></span></p>
<p><span style="white-space:pre"><span style="font-size:14px"><span style="white-space:pre"></span>源码地址如下:</span></span></p>
<h3 class="title mb-bg" title="[android] 获取网页中的HTML数据" style="font-size:20px; margin:15px 0px; padding:0px; list-style:none; font-family:'Microsoft YaHei'; line-height:1.5em; color:rgb(51,51,51); background-color:rgb(248,248,248)">
<a target="_blank" href="http://download.youkuaiyun.com/detail/u011596810/7855439">[android] 获取网页中的HTML数据</a></h3>
<span style="font-size:14px"><br>
</span>
<p></p>
</div>
<p><br>
</p>
<p><span style="font-size:14px"><span style="white-space:pre"></span>若想使自己的android运用联网,必须要在AndroidManifest.xml中获取联网的权限,(即在里面添加 <uses-permission android:name="android.permission.INTERNET" />代码)</span></p>
<p><span style="font-size:14px"><span style="white-space:pre"></span>如下图所示:</span></p>
<p><span style="font-size:14px"><span style="white-space:pre"><img src="https://img-blog.youkuaiyun.com/20140902163430398?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTU5NjgxMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="如下图所示:"></span></span></p>
<p><span style="font-size:14px"><span style="white-space:pre"><br>
</span></span></p>
<p><span style="font-size:14px"><span style="white-space:pre"><span style="white-space:pre"></span>然后</span>就是写页面的代码了,(即:本文中的activity_main.xml文件)</span></p>
<p><span style="font-size:14px"><span style="white-space:pre"></span></span></p>
<p></p>
<div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><b>[html]</b> <a href="#" class="ViewSource" title="view plain" οnclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" target="_blank">view plain</a><span data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" οnclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" target="_blank">copy</a><div style="position: absolute; left: 457px; top: 800px; width: 19px; height: 18px; z-index: 99;"><embed id="ZeroClipboardMovie_1" src="http://static.blog.youkuaiyun.com/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="19" height="18" name="ZeroClipboardMovie_1" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=1&width=19&height=18" wmode="transparent"></div></span><span data-mod="popu_169"> <a href="#" class="PrintSource" title="print" οnclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" target="_blank">print</a></span><a href="#" class="About" title="?" οnclick="dp.sh.Toolbar.Command('About',this);return false;" target="_blank">?</a></div></div><ol start="1" class="dp-xml"><li class="alt"><span><span class="tag"><</span><span class="tag-name">ScrollView</span><span> </span><span class="attribute">xmlns:android</span><span>=</span><span class="attribute-value">"http://schemas.android.com/apk/res/android"</span><span> </span></span></li><li class=""><span> <span class="attribute">xmlns:tools</span><span>=</span><span class="attribute-value">"http://schemas.android.com/tools"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">android:layout_width</span><span>=</span><span class="attribute-value">"match_parent"</span><span> </span></span></li><li class=""><span> <span class="attribute">android:layout_height</span><span>=</span><span class="attribute-value">"match_parent"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">tools:context</span><span>=</span><span class="attribute-value">".MainActivity"</span><span> </span><span class="tag">></span><span> </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">LinearLayout</span><span> </span></span></li><li class=""><span> <span class="attribute">android:layout_width</span><span>=</span><span class="attribute-value">"match_parent"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">android:layout_height</span><span>=</span><span class="attribute-value">"wrap_content"</span><span> </span></span></li><li class=""><span> <span class="attribute">android:orientation</span><span>=</span><span class="attribute-value">"vertical"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">android:padding</span><span>=</span><span class="attribute-value">"5dp"</span><span> </span><span class="tag">></span><span> </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">EditText</span><span> </span></span></li><li class=""><span> <span class="attribute">android:id</span><span>=</span><span class="attribute-value">"@+id/edturl"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">android:layout_width</span><span>=</span><span class="attribute-value">"match_parent"</span><span> </span></span></li><li class=""><span> <span class="attribute">android:layout_height</span><span>=</span><span class="attribute-value">"wrap_content"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">android:hint</span><span>=</span><span class="attribute-value">"输入网站"</span><span> </span></span></li><li class=""><span> <span class="attribute">android:inputType</span><span>=</span><span class="attribute-value">"textUri"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">android:singleLine</span><span>=</span><span class="attribute-value">"true"</span><span> </span><span class="tag">/></span><span> </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">Button</span><span> </span></span></li><li class=""><span> <span class="attribute">android:id</span><span>=</span><span class="attribute-value">"@+id/requesthtml"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">android:layout_width</span><span>=</span><span class="attribute-value">"wrap_content"</span><span> </span></span></li><li class=""><span> <span class="attribute">android:layout_height</span><span>=</span><span class="attribute-value">"wrap_content"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">android:text</span><span>=</span><span class="attribute-value">"获取html代码"</span><span> </span><span class="tag">/></span><span> </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">EditText</span><span> </span></span></li><li class=""><span> <span class="attribute">android:id</span><span>=</span><span class="attribute-value">"@+id/edthttp"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">android:layout_width</span><span>=</span><span class="attribute-value">"fill_parent"</span><span> </span></span></li><li class=""><span> <span class="attribute">android:layout_height</span><span>=</span><span class="attribute-value">"wrap_content"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">android:hint</span><span>=</span><span class="attribute-value">"这里显示的是你所输入的网站的HTML代码"</span><span> </span><span class="tag">/></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">LinearLayout</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="tag"></</span><span class="tag-name">ScrollView</span><span class="tag">></span><span> </span></span></li></ol></div><pre name="code" class="html" style="display: none;"><ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="5dp" >
<EditText
android:id="@+id/edturl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="输入网站"
android:inputType="textUri"
android:singleLine="true" />
<Button
android:id="@+id/requesthtml"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="获取html代码" />
<EditText
android:id="@+id/edthttp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="这里显示的是你所输入的网站的HTML代码" />
</LinearLayout>
</ScrollView></pre><br>
<br>
<p></p>
<p><span style="font-size:14px"><span style="white-space:pre"></span>重点来了,那是java文件的代码,不过,在这说一下注意的东西:在android 2.3版本以上,不能直接在主线程上联网,否则会抛出 <span style="font-family:宋体; font-size:14px; line-height:28px; text-indent:28px"><span style="color:#ff0000">android.os.NetworkOnMainThreadException</span><span style="color:#ffcccc"></span></span><span style="font-family:宋体; line-height:28px; text-indent:28px">的错误,这是因为在联网的过程中,程序会发送请求以便获取数据,但假如直接在主线程发送请求的话,页面就会卡住,进入假死状态。android后来版本为了预防这种情况,于是。。。。</span></span></p>
<p><br>
</p>
<p><span style="font-size:14px"><span style="white-space:pre"></span>因此,我们联网需要异步来操作。因为我之前都是用Thread的,现在想换换其它东西,就用了AsyncTask。</span></p>
<p><span style="font-size:14px"><br>
</span></p>
<p><span style="font-size:14px"><span style="white-space:pre"></span>于是Java文件分为两部分,第一部分是控制页面效果和监听的,第二部分是用来执行异步操作。</span></p>
<p><span style="font-size:14px"><br>
</span></p>
<p><span style="font-size:14px"><span style="white-space:pre"></span>第一部分代码如下:</span></p>
<p><span style="font-size:14px"></span></p>
<div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><b>[java]</b> <a href="#" class="ViewSource" title="view plain" οnclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" target="_blank">view plain</a><span data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" οnclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" target="_blank">copy</a><div style="position: absolute; left: 457px; top: 1761px; width: 19px; height: 18px; z-index: 99;"><embed id="ZeroClipboardMovie_2" src="http://static.blog.youkuaiyun.com/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="19" height="18" name="ZeroClipboardMovie_2" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=2&width=19&height=18" wmode="transparent"></div></span><span data-mod="popu_169"> <a href="#" class="PrintSource" title="print" οnclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" target="_blank">print</a></span><a href="#" class="About" title="?" οnclick="dp.sh.Toolbar.Command('About',this);return false;" target="_blank">?</a></div></div><ol start="1" class="dp-j"><li class="alt"><span><span class="keyword">import</span><span> android.app.Activity; </span></span></li><li class=""><span><span class="keyword">import</span><span> android.os.Bundle; </span></span></li><li class="alt"><span><span class="keyword">import</span><span> android.view.View; </span></span></li><li class=""><span><span class="keyword">import</span><span> android.widget.Button; </span></span></li><li class="alt"><span><span class="keyword">import</span><span> android.widget.EditText; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> MainActivity </span><span class="keyword">extends</span><span> Activity { </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="comment">// 定义组件</span><span> </span></span></li><li class=""><span> <span class="keyword">private</span><span> EditText edtURL; </span></span></li><li class="alt"><span> <span class="keyword">private</span><span> EditText edtHTTP; </span></span></li><li class=""><span> <span class="keyword">private</span><span> Button btnRequest; </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="keyword">private</span><span> String strURL;</span><span class="comment">// 用于存储网站地址</span><span> </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="keyword">private</span><span> MyTask myTask; </span></span></li><li class="alt"><span> <span class="annotation">@Override</span><span> </span></span></li><li class=""><span> <span class="keyword">protected</span><span> </span><span class="keyword">void</span><span> onCreate(Bundle savedInstanceState) { </span></span></li><li class="alt"><span> <span class="keyword">super</span><span>.onCreate(savedInstanceState); </span></span></li><li class=""><span> setContentView(R.layout.activity_main); </span></li><li class="alt"><span> </span></li><li class=""><span> <span class="comment">// 初始化组件</span><span> </span></span></li><li class="alt"><span> edtURL = (EditText) findViewById(R.id.edturl); </span></li><li class=""><span> edtHTTP = (EditText) findViewById(R.id.edthttp); </span></li><li class="alt"><span> btnRequest = (Button) findViewById(R.id.requesthtml); </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="comment">// 监听获取html代码的按钮</span><span> </span></span></li><li class=""><span> btnRequest.setOnClickListener(<span class="keyword">new</span><span> View.OnClickListener() { </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="annotation">@Override</span><span> </span></span></li><li class="alt"><span> <span class="keyword">public</span><span> </span><span class="keyword">void</span><span> onClick(View v) { </span></span></li><li class=""><span> <span class="keyword">if</span><span> (!(strURL = edtURL.getText().toString()).equals(</span><span class="string">""</span><span>)) { </span></span></li><li class="alt"><span> <span class="comment">//实例myTask对象</span><span> </span></span></li><li class=""><span> myTask = <span class="keyword">new</span><span> MyTask(edtHTTP); </span></span></li><li class="alt"><span> myTask.execute(strURL); </span></li><li class=""><span> } </span></li><li class="alt"><span> </span></li><li class=""><span> } </span></li><li class="alt"><span> }); </span></li><li class=""><span> } </span></li><li class="alt"><span> </span></li><li class=""><span>} </span></li></ol></div><pre name="code" class="java" style="display: none;">import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
// 定义组件
private EditText edtURL;
private EditText edtHTTP;
private Button btnRequest;
private String strURL;// 用于存储网站地址
private MyTask myTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化组件
edtURL = (EditText) findViewById(R.id.edturl);
edtHTTP = (EditText) findViewById(R.id.edthttp);
btnRequest = (Button) findViewById(R.id.requesthtml);
// 监听获取html代码的按钮
btnRequest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!(strURL = edtURL.getText().toString()).equals("")) {
//实例myTask对象
myTask = new MyTask(edtHTTP);
myTask.execute(strURL);
}
}
});
}
}</pre><br>
<span style="font-size:14px"><span style="white-space:pre"></span>第二部分代码:</span>
<p></p>
<p><span style="white-space:pre"></span></p>
<div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><b>[java]</b> <a href="#" class="ViewSource" title="view plain" οnclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" target="_blank">view plain</a><span data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" οnclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" target="_blank">copy</a><div style="position: absolute; left: 457px; top: 2628px; width: 19px; height: 18px; z-index: 99;"><embed id="ZeroClipboardMovie_3" src="http://static.blog.youkuaiyun.com/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="19" height="18" name="ZeroClipboardMovie_3" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=3&width=19&height=18" wmode="transparent"></div></span><span data-mod="popu_169"> <a href="#" class="PrintSource" title="print" οnclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" target="_blank">print</a></span><a href="#" class="About" title="?" οnclick="dp.sh.Toolbar.Command('About',this);return false;" target="_blank">?</a></div></div><ol start="1" class="dp-j"><li class="alt"><span><span class="keyword">import</span><span> java.io.BufferedReader; </span></span></li><li class=""><span><span class="keyword">import</span><span> java.io.IOException; </span></span></li><li class="alt"><span><span class="keyword">import</span><span> java.io.InputStreamReader; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> org.apache.http.HttpResponse; </span></span></li><li class=""><span><span class="keyword">import</span><span> org.apache.http.client.HttpClient; </span></span></li><li class="alt"><span><span class="keyword">import</span><span> org.apache.http.client.methods.HttpGet; </span></span></li><li class=""><span><span class="keyword">import</span><span> org.apache.http.impl.client.DefaultHttpClient; </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="keyword">import</span><span> com.xiaoyan.httpclienttest.R.integer; </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="keyword">import</span><span> android.os.AsyncTask; </span></span></li><li class="alt"><span><span class="keyword">import</span><span> android.widget.EditText; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="comment">/**</span> </span></li><li class=""><span><span class="comment"> * 用于异步操作来读取网页中HTML代码</span> </span></li><li class="alt"><span><span class="comment"> * </span> </span></li><li class=""><span><span class="comment"> * @author jianyan</span> </span></li><li class="alt"><span><span class="comment"> * </span> </span></li><li class=""><span><span class="comment"> */</span><span> </span></span></li><li class="alt"><span><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> MyTask </span><span class="keyword">extends</span><span> AsyncTask<String, integer, StringBuffer> { </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">private</span><span> EditText edtHTTP;</span><span class="comment">// 用于显示HTML代码</span><span> </span></span></li><li class=""><span> <span class="keyword">private</span><span> StringBuffer sbHTML;</span><span class="comment">// 用于储存HTML代码</span><span> </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="keyword">public</span><span> MyTask(EditText edtHTTP) { </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="keyword">this</span><span>.edtHTTP = edtHTTP; </span></span></li><li class="alt"><span> sbHTML = <span class="keyword">new</span><span> StringBuffer(); </span></span></li><li class=""><span> } </span></li><li class="alt"><span> </span></li><li class=""><span> <span class="comment">/**</span> </span></li><li class="alt"><span><span class="comment"> * doInBackground方法内部执行后台任务,不可在此方法内修改UI</span> </span></li><li class=""><span><span class="comment"> */</span><span> </span></span></li><li class="alt"><span> <span class="annotation">@Override</span><span> </span></span></li><li class=""><span> <span class="keyword">protected</span><span> StringBuffer doInBackground(String... params) { </span></span></li><li class="alt"><span> <span class="comment">// 初始化HTTP的客户端</span><span> </span></span></li><li class=""><span> HttpClient hc = <span class="keyword">new</span><span> DefaultHttpClient(); </span></span></li><li class="alt"><span> <span class="comment">// 实例化HttpGet对象</span><span> </span></span></li><li class=""><span> HttpGet hg = <span class="keyword">new</span><span> HttpGet(params[</span><span class="number">0</span><span>]); </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="keyword">try</span><span> { </span></span></li><li class="alt"><span> <span class="comment">// 让HTTP客户端已Get的方式请求数据,并把所得的数据赋值给HttpResponse的对象</span><span> </span></span></li><li class=""><span> HttpResponse hr = hc.execute(hg); </span></li><li class="alt"><span> <span class="comment">// 使用缓存的方式读取所返回的数据</span><span> </span></span></li><li class=""><span> BufferedReader br = <span class="keyword">new</span><span> BufferedReader(</span><span class="keyword">new</span><span> InputStreamReader(hr </span></span></li><li class="alt"><span> .getEntity().getContent())); </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="comment">// 读取网页所返回的HTML代码</span><span> </span></span></li><li class=""><span> String line = <span class="string">""</span><span>; </span></span></li><li class="alt"><span> sbHTML = <span class="keyword">new</span><span> StringBuffer(); </span></span></li><li class=""><span> <span class="keyword">while</span><span> ((line = br.readLine()) != </span><span class="keyword">null</span><span>) { </span></span></li><li class="alt"><span> sbHTML.append(line); </span></li><li class=""><span> } </span></li><li class="alt"><span> </span></li><li class=""><span> <span class="keyword">return</span><span> sbHTML; </span></span></li><li class="alt"><span> } <span class="keyword">catch</span><span> (IOException e) { </span></span></li><li class=""><span> </span></li><li class="alt"><span> edtHTTP.setText(<span class="string">"获取网页HTML代码出错!!!"</span><span>); </span></span></li><li class=""><span> } </span></li><li class="alt"><span> <span class="keyword">return</span><span> </span><span class="keyword">null</span><span>; </span></span></li><li class=""><span> } </span></li><li class="alt"><span> </span></li><li class=""><span> <span class="comment">/**</span> </span></li><li class="alt"><span><span class="comment"> * onPostExecute方法用于在执行完后台任务后更新UI,显示结果</span> </span></li><li class=""><span><span class="comment"> */</span><span> </span></span></li><li class="alt"><span> <span class="annotation">@Override</span><span> </span></span></li><li class=""><span> <span class="keyword">protected</span><span> </span><span class="keyword">void</span><span> onPostExecute(StringBuffer result) { </span></span></li><li class="alt"><span> <span class="comment">// 判断是否为null,若不为null,则在页面显示HTML代码</span><span> </span></span></li><li class=""><span> <span class="keyword">if</span><span> (result != </span><span class="keyword">null</span><span>) { </span></span></li><li class="alt"><span> edtHTTP.setText(result); </span></li><li class=""><span> } </span></li><li class="alt"><span> <span class="keyword">super</span><span>.onPostExecute(result); </span></span></li><li class=""><span> } </span></li><li class="alt"><span>} </span></li></ol></div><pre name="code" class="java" style="font-size: 14px; display: none;">import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import com.xiaoyan.httpclienttest.R.integer;
import android.os.AsyncTask;
import android.widget.EditText;
/**
* 用于异步操作来读取网页中HTML代码
*
* @author jianyan
*
*/
public class MyTask extends AsyncTask<String, integer, StringBuffer> {
private EditText edtHTTP;// 用于显示HTML代码
private StringBuffer sbHTML;// 用于储存HTML代码
public MyTask(EditText edtHTTP) {
this.edtHTTP = edtHTTP;
sbHTML = new StringBuffer();
}
/**
* doInBackground方法内部执行后台任务,不可在此方法内修改UI
*/
@Override
protected StringBuffer doInBackground(String... params) {
// 初始化HTTP的客户端
HttpClient hc = new DefaultHttpClient();
// 实例化HttpGet对象
HttpGet hg = new HttpGet(params[0]);
try {
// 让HTTP客户端已Get的方式请求数据,并把所得的数据赋值给HttpResponse的对象
HttpResponse hr = hc.execute(hg);
// 使用缓存的方式读取所返回的数据
BufferedReader br = new BufferedReader(new InputStreamReader(hr
.getEntity().getContent()));
// 读取网页所返回的HTML代码
String line = "";
sbHTML = new StringBuffer();
while ((line = br.readLine()) != null) {
sbHTML.append(line);
}
return sbHTML;
} catch (IOException e) {
edtHTTP.setText("获取网页HTML代码出错!!!");
}
return null;
}
/**
* onPostExecute方法用于在执行完后台任务后更新UI,显示结果
*/
@Override
protected void onPostExecute(StringBuffer result) {
// 判断是否为null,若不为null,则在页面显示HTML代码
if (result != null) {
edtHTTP.setText(result);
}
super.onPostExecute(result);
}
}
</pre>
<p></p>
<p style="font-size:14px"><span style="font-size:14px"><span style="white-space:pre"><br>
</span></span></p>
<p style="font-size:14px"><span style="font-size:14px"><span style="white-space:pre"><br>
</span></span></p>
<span style="font-size:14px"><span style="white-space:pre"></span>所有代码都在上面了,然后我们看看运行的效果:(测试机:中兴U808)</span>
<p><span style="font-size:14px"><span style="white-space:pre"><img src="https://img-blog.youkuaiyun.com/20140902170239943?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTU5NjgxMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="所有代码都在上面了,然后我们看看运行的效果:"><br>
</span></span></p>
<p><span style="font-size:14px"><span style="white-space:pre"><br>
</span></span></p>
<p><span style="white-space:pre"><span style="font-size:14px"><span style="white-space:pre"></span>源码地址如下:</span></span></p>
<h3 class="title mb-bg" title="[android] 获取网页中的HTML数据" style="font-size:20px; margin:15px 0px; padding:0px; list-style:none; font-family:'Microsoft YaHei'; line-height:1.5em; color:rgb(51,51,51); background-color:rgb(248,248,248)">
<a target="_blank" href="http://download.youkuaiyun.com/detail/u011596810/7855439">[android] 获取网页中的HTML数据</a></h3>
<span style="font-size:14px"><br>
</span>
<p></p>
</div>