Java 获取网页文本

Java 获取网页文本,java,android,Java,Android,我正在尝试编写我的第一个Android应用程序,需要将网页的文本作为字符串显示在TextView中。我在StackOverflow上找到了一些样品,但由于某些原因,它们似乎都不适合我。当我点击按钮检索文本时,应用程序崩溃。以下是我现在得到的(基于来自的代码): MainActivity.java文件 public class MainActivity extends ActionBarActivity { Button testbutton; Button

我正在尝试编写我的第一个Android应用程序,需要将网页的文本作为字符串显示在TextView中。我在StackOverflow上找到了一些样品,但由于某些原因,它们似乎都不适合我。当我点击按钮检索文本时,应用程序崩溃。以下是我现在得到的(基于来自的代码):

MainActivity.java文件



    public class MainActivity extends ActionBarActivity {

      Button testbutton;
      Button btnReset;
      TextView serverMsgViewComponent;
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          addListenerOnButton();
      }

      public void addListenerOnButton() {
          testbutton = (Button) findViewById(R.id.btnClickme);
          btnReset = (Button) findViewById(R.id.btnResetText);
          serverMsgViewComponent = (TextView) findViewById(R.id.serverMsgView);
          serverMsgViewComponent.setText("Custom text");
          final ReadWebpageAsyncTask readpage = new ReadWebpageAsyncTask();
          btnReset.setOnClickListener(new OnClickListener() {
              @Override
              public void onClick(View arg0) {
                  serverMsgViewComponent.setText("Server message placeholder");
              }
          });
          testbutton.setOnClickListener(new OnClickListener() {
              @Override
              public void onClick(View arg0) {
                  serverMsgViewComponent.setText("Retrieving message from server...");
                  readpage.readWebpage();
              }

          });

      }

      //some default code here
    }

和ReadWebpageAsyncTask.java

公共类ReadWebpageAsyncTask扩展活动{
私有文本视图文本视图;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=(textView)findViewById(R.id.serverMsgView);
}
私有类下载WebPagetTask扩展异步任务{
@凌驾
受保护的字符串doInBackground(字符串…URL){
字符串响应=”;
for(字符串url:url){
DefaultHttpClient=新的DefaultHttpClient();
HttpGet HttpGet=新的HttpGet(url);
试一试{
HttpResponse execute=client.execute(httpGet);
InputStream内容=execute.getEntity().getContent();
BufferedReader buffer=新的BufferedReader(
新的InputStreamReader(内容));
字符串s=“”;
而((s=buffer.readLine())!=null){
响应+=s;
}
}捕获(例外e){
e、 printStackTrace();
}
}
返回响应;
}
@凌驾
受保护的void onPostExecute(字符串结果){
setText(Html.fromHtml(result));
}
}
公开阅读网页(){
DownloadWebPagetTask=新建DownloadWebPagetTask();
task.execute(新字符串[]{”http://hglstudio.com/workspace/server.htm" });
}
}

所以,我说我从另一个So讨论中复制了代码,但这段代码对我不起作用,我需要帮助找出原因。取而代之的是,我的问题被标记为另一个问题的副本,而我的问题也被否决了。谢谢你,斯塔克

现在,我自己(高兴地)发现了这个问题。问题是域名由于某种原因无法解析为IP地址,然后抛出了一个错误。解决方案是首先通过访问url一次来“初始化”域,然后在第二次尝试中尝试下载文本

所以我先调用这个函数:

private void initializeDns(String url) {
    try {
        InetAddress address = InetAddress.getByName(url);
    } catch (UnknownHostException e) {
        e.printStackTrace();
    }
}

请显示您的logcat输出您是否启用了
INTERNET
权限?您是否允许
INTERNET
权限从您的
AndroidManifest.xml
文件复制到您的应用程序?否。我真是个笨蛋。现在只是在谷歌上搜索如何做到这一点
private void initializeDns(String url) {
    try {
        InetAddress address = InetAddress.getByName(url);
    } catch (UnknownHostException e) {
        e.printStackTrace();
    }
}