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