android - 我想获取网页的信息为什么无法显示?

【字号: 日期:2022-11-22浏览:25作者:雯心

问题描述

package com.example.myroom.network;

import android.app.Activity;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;

public class MainActivity extends Activity implements View.OnClickListener {

public static final int SHOW_RESPONSE=0;private Button sendRequest;private TextView responseText;StringBuilder response=new StringBuilder();private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) {switch (msg.what){ case SHOW_RESPONSE:String response=(String)msg.obj;responseText.setText(response);}super.handleMessage(msg); }};@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sendRequest=(Button)this.findViewById(R.id.send_request); responseText=(TextView)this.findViewById(R.id.response); sendRequest.setOnClickListener(this);}@Overridepublic void onClick(View view) { if(view.getId()==R.id.send_request){sendRequestWithHttpURLConnection();responseText.setText(response); }}private void sendRequestWithHttpURLConnection() { new Thread(){@Overridepublic void run() { HttpURLConnection connection=null; try{URL url=new URL('http://www.baidu.com');connection=(HttpURLConnection)url.openConnection();connection.setRequestMethod('GET');connection.setConnectTimeout(8000);connection.setReadTimeout(8000);InputStream in=connection.getInputStream();BufferedReader reader=new BufferedReader(new InputStreamReader(in));String line;while((line=reader.readLine())!=null){ response.append(line);}Message message=new Message();message.what=SHOW_RESPONSE;message.obj=response.toString();handler.sendMessage(message); } catch (MalformedURLException e) {e.printStackTrace(); } catch (IOException e) {e.printStackTrace(); }finally {if(connection!=null){ connection.disconnect();} } super.run();} }.start();}

}

<?xml version='1.0' encoding='utf-8'?><LinearLayout 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'android:orientation='vertical'><Button android: android:layout_width='match_parent' android:layout_height='wrap_content' android:text='Send request'/><ScrollView android:layout_width='match_parent' android:layout_height='match_parent' android:scrollbars='vertical'> <TextViewandroid: android:layout_width='match_parent'android:layout_height='wrap_content' /></ScrollView>

</LinearLayout>

有加权限,但不显示

问题解答

回答1:

照第一行代码抄写的?

回答2:

再检查一下网络权限吧

难道你没点按钮,或者模拟器没联网

回答3:

照你的代码,我试了下,可以的啊

import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.TextView;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;public class MainActivity extends AppCompatActivity implements View.OnClickListener { public static final int SHOW_RESPONSE = 0; private Button sendRequest; private TextView responseText; StringBuilder response = new StringBuilder(); private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) { switch (msg.what) {case SHOW_RESPONSE: String response = (String) msg.obj; responseText.setText(response); } super.handleMessage(msg);} }; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sendRequest = (Button) findViewById(R.id.send_request);sendRequest.setOnClickListener(this);responseText = (TextView) findViewById(R.id.response); } @Override public void onClick(View view) {if (view.getId() == R.id.send_request) { sendRequestWithHttpURLConnection(); responseText.setText(response);} } private void sendRequestWithHttpURLConnection() {new Thread() { @Override public void run() {HttpURLConnection connection = null;try { URL url = new URL('https://m.baidu.com/#'); connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod('GET'); connection.setConnectTimeout(8000); connection.setReadTimeout(8000); InputStream in = connection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); String line; while ((line = reader.readLine()) != null) {response.append(line); } Message message = new Message(); message.what = SHOW_RESPONSE; message.obj = response.toString(); handler.sendMessage(message);} catch (MalformedURLException e) { e.printStackTrace();} catch (IOException e) { e.printStackTrace();} finally { if (connection != null) {connection.disconnect(); }}super.run(); }}.start(); }}

<?xml version='1.0' encoding='utf-8'?><LinearLayout xmlns:android='http://schemas.android.com/apk/res/android' android: android:layout_width='match_parent' android:layout_height='match_parent' android:orientation='vertical'> <Buttonandroid: android:layout_width='match_parent'android:layout_height='wrap_content'android:text='Send request'/> <ScrollViewandroid:layout_width='match_parent'android:layout_height='match_parent'android:scrollbars='vertical'><TextView android: android:layout_width='match_parent' android:layout_height='wrap_content'/> </ScrollView></LinearLayout>

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

相关文章: