java – Android:从网页获取HTML作为String,HttpClient无法正常工作
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Android:从网页获取HTML作为String,HttpClient无法正常工作,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3156字,纯文字阅读大概需要5分钟。
内容图文
![java – Android:从网页获取HTML作为String,HttpClient无法正常工作](/upload/InfoBanner/zyjiaocheng/698/a483d1786443498a92a79e793d6b3bed.jpg)
我正在编写一个使用HttpClient连接到网页的应用程序(目的是能够将一些网页的HTML复制到一个字符串中).我尝试使用HttpClient连接完成此操作.这是我使用的代码:
public void getText() {
final TextView contentView = (TextView) findViewById(R.id.textview);
String url = "http://www.anandtech.com";
/* An instance of this class will be registered as a JavaScript interface */
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
ResponseHandler<String> handler = new BasicResponseHandler();
try {
String response = client.execute(get, handler);
contentView.setText(response);
} catch (Exception e) {
// TODO Auto-generated catch block
contentView.setText(e.getMessage());
}
}
我通过删除此块的每个语句找到了错误的来源,然后测试错误是否仍然发生,并发现错误源自client.execute(get,handler).我有权在AndroidManifest.xml上使用互联网,我知道互联网无论如何都适用于应用程序,因为WebView可以加载得很好.我怎样才能做到这一点?
此外,我尝试通过将javascript注入webview URL来获取String,其代码如下:
MyJavaScriptInterface.class
class MyJavaScriptInterface
{
私有TextView contentView;
public MyJavaScriptInterface(TextView aContentView)
{
contentView = aContentView;
}
}
MainActivity.java
@SuppressWarnings( “未使用”)
public void processContent(String aContent)
{
final String content = aContent;
contentView.post(new Runnable()
{
public void run()
{
contentView.setText(content);
}
});
}
}
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new MyJavaScriptInterface(contentView),"INTERFACE");
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
webView.loadUrl("javascript:window.INTERFACE.processContent(
document.getElementsByTagName('p')[0].innerHTML);");
}
});
webView.loadUrl("http://tabshowdown.blogspot.com");
类和processContent()方法都在Activity的void onCreate方法FIY中定义.在这种情况下问题是javascript没有启动processContent()方法,因为a.如果我尝试初始化任何其他javascript命令,例如document.write(),webview做出反应,所以javascript不是问题.如果我尝试从脚本上的任何其他位置启动MyJavaScriptInterface和processContent()方法,它就可以正常工作.所以在我看来好像javascript启动方法有困难(即使其他用户报告此方法工作).
有人可以帮助我使用这些方法中的任何一种吗?
提前致谢
解决方法:
这应该工作:
public class MainActivity extends Activity{
private TextView contentView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(your layout);
contentView = (TextView) findViewById(R.id.textview);
DownloadTask task = new DownloadTask();
task.execute(url);
}
private class DownloadTask extends AsyncTask<String, Void, String>{
@Override
protected String doInBackground(String... urls) {
HttpResponse response = null;
HttpGet httpGet = null;
HttpClient mHttpClient = null;
String s = "";
try {
if(mHttpClient == null){
mHttpClient = new DefaultHttpClient();
}
httpGet = new HttpGet(urls[0]);
response = mHttpClient.execute(httpGet);
s = EntityUtils.toString(response.getEntity(), "UTF-8");
} catch (IOException e) {
e.printStackTrace();
}
return s;
}
@Override
protected void onPostExecute(String result){
contentView.setText(result);
}
}
}
内容总结
以上是互联网集市为您收集整理的java – Android:从网页获取HTML作为String,HttpClient无法正常工作全部内容,希望文章能够帮你解决java – Android:从网页获取HTML作为String,HttpClient无法正常工作所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。