android 获取网页内容

来源:互联网 发布:微星fps软件 编辑:程序博客网 时间:2024/05/12 11:08


1. AndroidManifest.xml加入权限:

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission Android:name="android.permission.ACCESS_NETWORK_STATE" />


2. android3.0以上凡是涉及到网络,下载等耗时操作,都不能在主线程中运行,不允许直接在ui线程直接操作httpClient

所以方法一:另起线程去访问。

方法二:如果不想另起线程,加上以下代码,可以取消严格限制

StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
  StrictMode.setThreadPolicy(policy);

3.获取网页内容代码:

代码一:

[java] view plain copy
  1. package List.com.list;  
  2.    
  3. import org.apache.http.HttpResponse;  
  4.    
  5. import org.apache.http.client.methods.HttpGet;  
  6. import org.apache.http.impl.client.DefaultHttpClient;  
  7. import org.apache.http.util.EntityUtils;  
  8. import org.json.JSONArray;  
  9. import android.app.Activity;  
  10. import android.os.Bundle;  
  11. import android.util.Log;  
  12. import android.view.View;  
  13. import android.view.View.OnClickListener;  
  14. import android.widget.ArrayAdapter;  
  15. import android.widget.Button;  
  16. import android.widget.ListView;  
  17.    
  18. public class ListActivity extends Activity {  
  19. /** Called when the activity is first created. */  
  20.    
  21. public Button b = null;  
  22. public String s=null;  
  23.    
  24. public ListView listview1=null;  
  25.    
  26. @Override  
  27. public void onCreate(Bundle savedInstanceState) {  
  28. super.onCreate(savedInstanceState);  
  29. setContentView(R.layout.main);  
  30.    
  31. b = (Button) findViewById(R.id.button1);  
  32.    
  33. listview1=(ListView) findViewById(R.id.listview1);  
  34.    
  35. b.setOnClickListener(new OnClickListener() {  
  36.    
  37. public void onClick(View v) {  
  38. // TODO Auto-generated method stub  
  39.    
  40. HttpGet httpget = new HttpGet("http://192.168.0.110:80/json/index.php");  
  41. HttpResponse httpresponse;  
  42. try {  
  43.    
  44. //执行gethttp提交  
  45. httpresponse = new DefaultHttpClient().execute(httpget);  
  46.    
  47. if(httpresponse.getStatusLine().getStatusCode()==200){  
  48. //如果成功吧返回的数据转换成string类型  
  49. String s=EntityUtils.toString(httpresponse.getEntity());  
  50.    
  51. Log.i("JSON",s);  
  52.    
  53. //声明一个json数组  
  54. JSONArray jsonarray=new JSONArray(s);  
  55.    
  56. //声明一个数据组,长度他json数组的长度一样  
  57. String[] data=new String[jsonarray.length()];  
  58.    
  59. //循环输出  
  60. for(int i=0;i<jsonarray.length();i++){  
  61.    
  62. Log.i("dd",jsonarray.getJSONObject(i).getString("ddd"));  
  63. Log.i("tt",jsonarray.getJSONObject(i).getString("title"));  
  64.    
  65. //把结果存到一个数组里;  
  66. data[i]=jsonarray.getJSONObject(i).getString("ddd")+jsonarray.getJSONObject(i).getString("title");  
  67. }  
  68.    
  69.    
  70. ArrayAdapter<String> arrayadapter=new ArrayAdapter<String>(ListActivity.this, android.R.layout.simple_expandable_list_item_1,data);  
  71. //设置listview数据;  
  72. listview1.setAdapter(arrayadapter);  
  73.    
  74. }  
  75.    
  76. catch (Exception e) {  
  77. Log.i("E",e.getMessage().toString());  
  78.    
  79. }  
  80.    
  81. }  
  82. });  
  83.    
  84.    
  85.    
  86. }  
  87. }  

代码二:

[java] view plain copy
  1. new Thread(){  
  2. public void run(){  
  3. client = new DefaultHttpClient();   
  4. StringBuilder builder = new StringBuilder();   
  5. HttpGet myget = new HttpGet("http://10.0.2.2/testAndroid.php");   
  6. //HttpGet myget = new HttpGet("http://www.crazyit.org");   
  7. try {   
  8. HttpResponse response = client.execute(myget);   
  9. HttpEntity entity = response.getEntity();  
  10. BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()));   
  11. for (String s = reader.readLine(); s != null; s = reader.readLine()) {   
  12. builder.append(s);   
  13. }   
  14. JSONObject jsonObject = new JSONObject(builder.toString());   
  15. String re_password = jsonObject.getString("password");   
  16.    
  17. catch (Exception e) {   
  18. e.printStackTrace();   
  19. }   
  20. }  
  21. }.start();  

代码三

[java] view plain copy
  1. void getInput(){     
  2. try    
  3. {    
  4. URL url = new URL("http://www.google.cn/");    
  5. HttpURLConnection conn = (HttpURLConnection) url.openConnection();    
  6. conn.setDoInput(true);    
  7. conn.setConnectTimeout(10000);    
  8. conn.setRequestMethod("GET");    
  9. conn.setRequestProperty("accept""*/*");    
  10. String location = conn.getRequestProperty("location");    
  11. int resCode = conn.getResponseCode();    
  12. conn.connect();    
  13. InputStream stream = conn.getInputStream();    
  14. byte[] data=new byte[102400];    
  15. int length=stream.read(data);    
  16. String str=new String(data,0,length);     
  17. conn.disconnect();    
  18. System.out.println(str);    
  19. stream.close();    
  20. }    
  21. catch(Exception ee)    
  22. {    
  23. System.out.print("ee:"+ee.getMessage());     
  24. }    
  25. }   

1. AndroidManifest.xml加入权限:

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission Android:name="android.permission.ACCESS_NETWORK_STATE" />


2. android3.0以上凡是涉及到网络,下载等耗时操作,都不能在主线程中运行,不允许直接在ui线程直接操作httpClient

所以方法一:另起线程去访问。

方法二:如果不想另起线程,加上以下代码,可以取消严格限制

StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
  StrictMode.setThreadPolicy(policy);

3.获取网页内容代码:

代码一:

[java] view plain copy
  1. package List.com.list;  
  2.    
  3. import org.apache.http.HttpResponse;  
  4.    
  5. import org.apache.http.client.methods.HttpGet;  
  6. import org.apache.http.impl.client.DefaultHttpClient;  
  7. import org.apache.http.util.EntityUtils;  
  8. import org.json.JSONArray;  
  9. import android.app.Activity;  
  10. import android.os.Bundle;  
  11. import android.util.Log;  
  12. import android.view.View;  
  13. import android.view.View.OnClickListener;  
  14. import android.widget.ArrayAdapter;  
  15. import android.widget.Button;  
  16. import android.widget.ListView;  
  17.    
  18. public class ListActivity extends Activity {  
  19. /** Called when the activity is first created. */  
  20.    
  21. public Button b = null;  
  22. public String s=null;  
  23.    
  24. public ListView listview1=null;  
  25.    
  26. @Override  
  27. public void onCreate(Bundle savedInstanceState) {  
  28. super.onCreate(savedInstanceState);  
  29. setContentView(R.layout.main);  
  30.    
  31. b = (Button) findViewById(R.id.button1);  
  32.    
  33. listview1=(ListView) findViewById(R.id.listview1);  
  34.    
  35. b.setOnClickListener(new OnClickListener() {  
  36.    
  37. public void onClick(View v) {  
  38. // TODO Auto-generated method stub  
  39.    
  40. HttpGet httpget = new HttpGet("http://192.168.0.110:80/json/index.php");  
  41. HttpResponse httpresponse;  
  42. try {  
  43.    
  44. //执行gethttp提交  
  45. httpresponse = new DefaultHttpClient().execute(httpget);  
  46.    
  47. if(httpresponse.getStatusLine().getStatusCode()==200){  
  48. //如果成功吧返回的数据转换成string类型  
  49. String s=EntityUtils.toString(httpresponse.getEntity());  
  50.    
  51. Log.i("JSON",s);  
  52.    
  53. //声明一个json数组  
  54. JSONArray jsonarray=new JSONArray(s);  
  55.    
  56. //声明一个数据组,长度他json数组的长度一样  
  57. String[] data=new String[jsonarray.length()];  
  58.    
  59. //循环输出  
  60. for(int i=0;i<jsonarray.length();i++){  
  61.    
  62. Log.i("dd",jsonarray.getJSONObject(i).getString("ddd"));  
  63. Log.i("tt",jsonarray.getJSONObject(i).getString("title"));  
  64.    
  65. //把结果存到一个数组里;  
  66. data[i]=jsonarray.getJSONObject(i).getString("ddd")+jsonarray.getJSONObject(i).getString("title");  
  67. }  
  68.    
  69.    
  70. ArrayAdapter<String> arrayadapter=new ArrayAdapter<String>(ListActivity.this, android.R.layout.simple_expandable_list_item_1,data);  
  71. //设置listview数据;  
  72. listview1.setAdapter(arrayadapter);  
  73.    
  74. }  
  75.    
  76. catch (Exception e) {  
  77. Log.i("E",e.getMessage().toString());  
  78.    
  79. }  
  80.    
  81. }  
  82. });  
  83.    
  84.    
  85.    
  86. }  
  87. }  

代码二:

[java] view plain copy
  1. new Thread(){  
  2. public void run(){  
  3. client = new DefaultHttpClient();   
  4. StringBuilder builder = new StringBuilder();   
  5. HttpGet myget = new HttpGet("http://10.0.2.2/testAndroid.php");   
  6. //HttpGet myget = new HttpGet("http://www.crazyit.org");   
  7. try {   
  8. HttpResponse response = client.execute(myget);   
  9. HttpEntity entity = response.getEntity();  
  10. BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()));   
  11. for (String s = reader.readLine(); s != null; s = reader.readLine()) {   
  12. builder.append(s);   
  13. }   
  14. JSONObject jsonObject = new JSONObject(builder.toString());   
  15. String re_password = jsonObject.getString("password");   
  16.    
  17. catch (Exception e) {   
  18. e.printStackTrace();   
  19. }   
  20. }  
  21. }.start();  

代码三

[java] view plain copy
  1. void getInput(){     
  2. try    
  3. {    
  4. URL url = new URL("http://www.google.cn/");    
  5. HttpURLConnection conn = (HttpURLConnection) url.openConnection();    
  6. conn.setDoInput(true);    
  7. conn.setConnectTimeout(10000);    
  8. conn.setRequestMethod("GET");    
  9. conn.setRequestProperty("accept""*/*");    
  10. String location = conn.getRequestProperty("location");    
  11. int resCode = conn.getResponseCode();    
  12. conn.connect();    
  13. InputStream stream = conn.getInputStream();    
  14. byte[] data=new byte[102400];    
  15. int length=stream.read(data);    
  16. String str=new String(data,0,length);     
  17. conn.disconnect();    
  18. System.out.println(str);    
  19. stream.close();    
  20. }    
  21. catch(Exception ee)    
  22. {    
  23. System.out.print("ee:"+ee.getMessage());     
  24. }    
  25. }   

0 1
原创粉丝点击