android如何获取网页数据?思路正确马上结贴不纠结。

程序员001 2013-06-03 07:18:01
android如何获取网页数据?思路正确马上结贴不纠结。
...全文
2961 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序员001 2013-06-03
  • 打赏
  • 举报
回复
结贴给分不纠结
忘世麒麟 2013-06-03
  • 打赏
  • 举报
回复
那就祝你好运!
程序员001 2013-06-03
  • 打赏
  • 举报
回复
引用 3 楼 baijiaheizhiganmao 的回复:
参考如下代码:


01.//第一种   
02./**获取参数(ArrayList<NameValuePair> nameValuePairs,String url)后post给远程服务器 
03. * 将获得的返回结果(String)返回给调用者 
04. * 本函数适用于查询数量较少的时候 
05. * Chen.Zhidong 
06. * 2011-02-15*/  
07.public String posturl(ArrayList<NameValuePair> nameValuePairs,String url){  
08.    String result = "";  
09.    String tmp= "";  
10.    InputStream is = null;  
11.    try{  
12.        HttpClient httpclient = new DefaultHttpClient();  
13.        HttpPost httppost = new HttpPost(url);  
14.        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));  
15.        HttpResponse response = httpclient.execute(httppost);  
16.        HttpEntity entity = response.getEntity();  
17.        is = entity.getContent();  
18.    }catch(Exception e){  
19.        return "Fail to establish http connection!";  
20.    }  
21.  
22.    try{  
23.        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"));  
24.        StringBuilder sb = new StringBuilder();  
25.        String line = null;  
26.        while ((line = reader.readLine()) != null) {  
27.            sb.append(line + "\n");  
28.        }  
29.        is.close();  
30.  
31.        tmp=sb.toString();  
32.    }catch(Exception e){  
33.        return "Fail to convert net stream!";  
34.    }  
35.  
36.    try{  
37.        JSONArray jArray = new JSONArray(tmp);  
38.        for(int i=0;i<jArray.length();i++){  
39.            JSONObject json_data = jArray.getJSONObject(i);  
40.            Iterator<?> keys=json_data.keys();  
41.            while(keys.hasNext()){  
42.                result += json_data.getString(keys.next().toString());  
43.            }  
44.        }  
45.    }catch(JSONException e){  
46.        return "The URL you post is wrong!";  
47.    }  
48.  
49.    return result;  
50.}  
51.  
52.//第二种   
53./**获取参数指定的网页代码,将其返回给调用者,由调用者对其解析 
54. * 返回String 
55. * Chen.Zhidong 
56. * 2011-02-15*/  
57.public String posturl(String url){  
58.    InputStream is = null;  
59.    String result = "";  
60.  
61.    try{  
62.        HttpClient httpclient = new DefaultHttpClient();  
63.        HttpPost httppost = new HttpPost(url);  
64.        HttpResponse response = httpclient.execute(httppost);  
65.        HttpEntity entity = response.getEntity();  
66.        is = entity.getContent();  
67.    }catch(Exception e){  
68.        return "Fail to establish http connection!"+e.toString();  
69.    }  
70.  
71.    try{  
72.        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"));  
73.        StringBuilder sb = new StringBuilder();  
74.        String line = null;  
75.        while ((line = reader.readLine()) != null) {  
76.            sb.append(line + "\n");  
77.        }  
78.        is.close();  
79.  
80.        result=sb.toString();  
81.    }catch(Exception e){  
82.        return "Fail to convert net stream!";  
83.    }  
84.  
85.    return result;  
86.}  
87.  
88.//第三种   
89./**获取指定地址的网页数据 
90. * 返回数据流 
91. * Chen.Zhidong 
92. * 2011-02-18*/  
93.public InputStream streampost(String remote_addr){  
94.    URL infoUrl = null;  
95.    InputStream inStream = null;  
96.    try {  
97.        infoUrl = new URL(remote_addr);  
98.        URLConnection connection = infoUrl.openConnection();  
99.        HttpURLConnection httpConnection = (HttpURLConnection)connection;  
100.        int responseCode = httpConnection.getResponseCode();  
101.        if(responseCode == HttpURLConnection.HTTP_OK){  
102.            inStream = httpConnection.getInputStream();  
103.        }  
104.    } catch (MalformedURLException e) {  
105.        // TODO Auto-generated catch block   
106.        e.printStackTrace();  
107.    } catch (IOException e) {  
108.        // TODO Auto-generated catch block   
109.        e.printStackTrace();  
110.    }  
111.    return inStream;  
112.}  
引用 3 楼 baijiaheizhiganmao 的回复:
参考如下代码:


01.//第一种   
02./**获取参数(ArrayList<NameValuePair> nameValuePairs,String url)后post给远程服务器 
03. * 将获得的返回结果(String)返回给调用者 
04. * 本函数适用于查询数量较少的时候 
05. * Chen.Zhidong 
06. * 2011-02-15*/  
07.public String posturl(ArrayList<NameValuePair> nameValuePairs,String url){  
08.    String result = "";  
09.    String tmp= "";  
10.    InputStream is = null;  
11.    try{  
12.        HttpClient httpclient = new DefaultHttpClient();  
13.        HttpPost httppost = new HttpPost(url);  
14.        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));  
15.        HttpResponse response = httpclient.execute(httppost);  
16.        HttpEntity entity = response.getEntity();  
17.        is = entity.getContent();  
18.    }catch(Exception e){  
19.        return "Fail to establish http connection!";  
20.    }  
21.  
22.    try{  
23.        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"));  
24.        StringBuilder sb = new StringBuilder();  
25.        String line = null;  
26.        while ((line = reader.readLine()) != null) {  
27.            sb.append(line + "\n");  
28.        }  
29.        is.close();  
30.  
31.        tmp=sb.toString();  
32.    }catch(Exception e){  
33.        return "Fail to convert net stream!";  
34.    }  
35.  
36.    try{  
37.        JSONArray jArray = new JSONArray(tmp);  
38.        for(int i=0;i<jArray.length();i++){  
39.            JSONObject json_data = jArray.getJSONObject(i);  
40.            Iterator<?> keys=json_data.keys();  
41.            while(keys.hasNext()){  
42.                result += json_data.getString(keys.next().toString());  
43.            }  
44.        }  
45.    }catch(JSONException e){  
46.        return "The URL you post is wrong!";  
47.    }  
48.  
49.    return result;  
50.}  
51.  
52.//第二种   
53./**获取参数指定的网页代码,将其返回给调用者,由调用者对其解析 
54. * 返回String 
55. * Chen.Zhidong 
56. * 2011-02-15*/  
57.public String posturl(String url){  
58.    InputStream is = null;  
59.    String result = "";  
60.  
61.    try{  
62.        HttpClient httpclient = new DefaultHttpClient();  
63.        HttpPost httppost = new HttpPost(url);  
64.        HttpResponse response = httpclient.execute(httppost);  
65.        HttpEntity entity = response.getEntity();  
66.        is = entity.getContent();  
67.    }catch(Exception e){  
68.        return "Fail to establish http connection!"+e.toString();  
69.    }  
70.  
71.    try{  
72.        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"));  
73.        StringBuilder sb = new StringBuilder();  
74.        String line = null;  
75.        while ((line = reader.readLine()) != null) {  
76.            sb.append(line + "\n");  
77.        }  
78.        is.close();  
79.  
80.        result=sb.toString();  
81.    }catch(Exception e){  
82.        return "Fail to convert net stream!";  
83.    }  
84.  
85.    return result;  
86.}  
87.  
88.//第三种   
89./**获取指定地址的网页数据 
90. * 返回数据流 
91. * Chen.Zhidong 
92. * 2011-02-18*/  
93.public InputStream streampost(String remote_addr){  
94.    URL infoUrl = null;  
95.    InputStream inStream = null;  
96.    try {  
97.        infoUrl = new URL(remote_addr);  
98.        URLConnection connection = infoUrl.openConnection();  
99.        HttpURLConnection httpConnection = (HttpURLConnection)connection;  
100.        int responseCode = httpConnection.getResponseCode();  
101.        if(responseCode == HttpURLConnection.HTTP_OK){  
102.            inStream = httpConnection.getInputStream();  
103.        }  
104.    } catch (MalformedURLException e) {  
105.        // TODO Auto-generated catch block   
106.        e.printStackTrace();  
107.    } catch (IOException e) {  
108.        // TODO Auto-generated catch block   
109.        e.printStackTrace();  
110.    }  
111.    return inStream;  
112.}  
这个方法是可行的,非常实用
程序员001 2013-06-03
  • 打赏
  • 举报
回复
这个方法十分可行
攃肩洏過 2013-06-03
  • 打赏
  • 举报
回复
是获得网页内容的数据吧?我们的思路是用webview加上javascript,这些都在一个activity里实现,具体的网页我们用assert中存的静态网页然后通过点击链接去获取其他网页的连接。
忘世麒麟 2013-06-03
  • 打赏
  • 举报
回复
参考如下代码:


01.//第一种   
02./**获取参数(ArrayList<NameValuePair> nameValuePairs,String url)后post给远程服务器 
03. * 将获得的返回结果(String)返回给调用者 
04. * 本函数适用于查询数量较少的时候 
05. * Chen.Zhidong 
06. * 2011-02-15*/  
07.public String posturl(ArrayList<NameValuePair> nameValuePairs,String url){  
08.    String result = "";  
09.    String tmp= "";  
10.    InputStream is = null;  
11.    try{  
12.        HttpClient httpclient = new DefaultHttpClient();  
13.        HttpPost httppost = new HttpPost(url);  
14.        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));  
15.        HttpResponse response = httpclient.execute(httppost);  
16.        HttpEntity entity = response.getEntity();  
17.        is = entity.getContent();  
18.    }catch(Exception e){  
19.        return "Fail to establish http connection!";  
20.    }  
21.  
22.    try{  
23.        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"));  
24.        StringBuilder sb = new StringBuilder();  
25.        String line = null;  
26.        while ((line = reader.readLine()) != null) {  
27.            sb.append(line + "\n");  
28.        }  
29.        is.close();  
30.  
31.        tmp=sb.toString();  
32.    }catch(Exception e){  
33.        return "Fail to convert net stream!";  
34.    }  
35.  
36.    try{  
37.        JSONArray jArray = new JSONArray(tmp);  
38.        for(int i=0;i<jArray.length();i++){  
39.            JSONObject json_data = jArray.getJSONObject(i);  
40.            Iterator<?> keys=json_data.keys();  
41.            while(keys.hasNext()){  
42.                result += json_data.getString(keys.next().toString());  
43.            }  
44.        }  
45.    }catch(JSONException e){  
46.        return "The URL you post is wrong!";  
47.    }  
48.  
49.    return result;  
50.}  
51.  
52.//第二种   
53./**获取参数指定的网页代码,将其返回给调用者,由调用者对其解析 
54. * 返回String 
55. * Chen.Zhidong 
56. * 2011-02-15*/  
57.public String posturl(String url){  
58.    InputStream is = null;  
59.    String result = "";  
60.  
61.    try{  
62.        HttpClient httpclient = new DefaultHttpClient();  
63.        HttpPost httppost = new HttpPost(url);  
64.        HttpResponse response = httpclient.execute(httppost);  
65.        HttpEntity entity = response.getEntity();  
66.        is = entity.getContent();  
67.    }catch(Exception e){  
68.        return "Fail to establish http connection!"+e.toString();  
69.    }  
70.  
71.    try{  
72.        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"));  
73.        StringBuilder sb = new StringBuilder();  
74.        String line = null;  
75.        while ((line = reader.readLine()) != null) {  
76.            sb.append(line + "\n");  
77.        }  
78.        is.close();  
79.  
80.        result=sb.toString();  
81.    }catch(Exception e){  
82.        return "Fail to convert net stream!";  
83.    }  
84.  
85.    return result;  
86.}  
87.  
88.//第三种   
89./**获取指定地址的网页数据 
90. * 返回数据流 
91. * Chen.Zhidong 
92. * 2011-02-18*/  
93.public InputStream streampost(String remote_addr){  
94.    URL infoUrl = null;  
95.    InputStream inStream = null;  
96.    try {  
97.        infoUrl = new URL(remote_addr);  
98.        URLConnection connection = infoUrl.openConnection();  
99.        HttpURLConnection httpConnection = (HttpURLConnection)connection;  
100.        int responseCode = httpConnection.getResponseCode();  
101.        if(responseCode == HttpURLConnection.HTTP_OK){  
102.            inStream = httpConnection.getInputStream();  
103.        }  
104.    } catch (MalformedURLException e) {  
105.        // TODO Auto-generated catch block   
106.        e.printStackTrace();  
107.    } catch (IOException e) {  
108.        // TODO Auto-generated catch block   
109.        e.printStackTrace();  
110.    }  
111.    return inStream;  
112.}  
macrojj 2013-06-03
  • 打赏
  • 举报
回复
就 http get呗。
 HttpGet httpRequest = new HttpGet(url);
        HttpClient httpClient = new DefaultHttpClient();  
        String strResult = "doGetError";

        try {

            /* 发送请求并等待响应 */
            HttpResponse httpResponse = httpClient.execute(httpRequest);
            /* 若状态码为200 ok */
            if (httpResponse.getStatusLine().getStatusCode() == 200) {
                /* 读返回数据 */
                strResult = EntityUtils.toString(httpResponse.getEntity());

            } else {
                strResult = "Error Response: "
                        + httpResponse.getStatusLine().toString();
            }
        } catch (ClientProtocolException e) {
            strResult = e.getMessage().toString();
            e.printStackTrace();
        } catch (IOException e) {
            strResult = e.getMessage().toString();
            e.printStackTrace();
        } catch (Exception e) {
            strResult = e.getMessage().toString();
            e.printStackTrace();
        }
忘世麒麟 2013-06-03
  • 打赏
  • 举报
回复
参考如下代码:

1、首先在AndroidManifest中加入Internet权限:
1.<!-- 访问网络的权限 -->  
2. <uses-permission Android:name="android.permission.INTERNET"/>  

Activity中得代码如下
1.public class GetHtmlCodeActivity extends Activity {  
2.    @Override  
3.    public void onCreate(Bundle savedInstanceState) { 
4.        super.onCreate(savedInstanceState);  
5.        setContentView(R.layout.main);  
6.          
7.        TextView textView = (TextView)this.findViewById(R.id.picture_textview);  
8.        try {  
9.            textView.setText(getPictureData("http://www.baidu.com"));  
10.        } catch (Exception e) {  
11.            Log.e("GetHtmlCodeActivity", e.toString());  
12.            Toast.makeText(GetHtmlCodeActivity.this, "网络连接失败", 1).show();  
13.        }  
14.    }  
15.    //得到图片的二进制数据   
16.    public String getPictureData(String path) throws Exception{  
17.        // 类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。   
18.        URL url = new URL("http://www.baidu.com/");  
19.        // 每个 HttpURLConnection 实例都可用于生成单个请求,   
20.        //但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络   
21.        HttpURLConnection conn = (HttpURLConnection) url.openConnection();  
22.        //设置 URL 请求的方法   
23.        conn.setRequestMethod("GET");  
24.        //设置一个指定的超时值(以毫秒为单位),   
25.        //该值将在打开到此 URLConnection 引用的资源的通信链接时使用。   
26.        conn.setConnectTimeout(5 * 1000);  
27.        // conn.getInputStream()返回从此打开的连接读取的输入流   
28.        InputStream inStream = conn.getInputStream();// 通过输入流获取html数据   
29.        byte[] data = readInputStream(inStream);// 得到html的二进制数据   
30.        String html = new String(data);  
31.        return html;  
32.          
33.    }  
34.    //读取输入流中的数据,返回字节数组byte[]   
35.    public byte[] readInputStream(InputStream inStream) throws Exception{  
36.        //此类实现了一个输出流,其中的数据被写入一个 byte 数组   
37.        ByteArrayOutputStream outStream = new ByteArrayOutputStream();  
38.        // 字节数组   
39.        byte[] buffer = new byte[1024];  
40.        int len = 0;  
41.        //从输入流中读取一定数量的字节,并将其存储在缓冲区数组buffer 中   
42.        while ((len = inStream.read(buffer)) != -1) {  
43.            // 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流  
44.            outStream.write(buffer, 0, len);  
45.        }  
46.        inStream.close();  
47.        //toByteArray()创建一个新分配的 byte 数组。   
48.        return outStream.toByteArray();  
49.    }  
50.}  


80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧