我有以下代码,它希望返回从http://developer.android.com加载的整个html文件内容。
(代码在Xtend中,但我认为无所谓)。
var html = try {
var client = new OkHttpClient()
var request = new Request.Builder()
.url("http://developer.android.com/")
.build()
var response = client.newCall(request).execute()
response.body.string
} catch(IOException err) {
e("HTML error", err.toString)
return
}
Log.d("HTML", html)
几行html后,输出被切断了。
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
<meta content="IE=edge" http-equiv="X-UA-Compatible">
<meta name="description" content="The official site for Android developers. Provides the Android SDK and documentation for app developers and designers.">
<meta name="xsrf_token" content="A3XCSylWU7AR4OhsL_yhMWlzbNcbh9Hk3Csw0HAUa5E6MTQ2NDQyMTgwNzE1MDQ0MA" />
<link rel="alternate" href="http://developer.android.com/index.html" hreflang="en">
<link rel="alternate" href="http://developer.android.com/index.html?hl=es" hreflang="es">
<link rel="alternate" href="http://developer.android.com/index.html?hl=id" hreflang="id">
<link rel="alternate" href="http://developer.android.com/index.html?hl=ja" hreflang="ja">
<link rel="alternate" href="http://developer.android.com/index.html?hl=ko" hreflang="ko">
<link rel="alternate" href="http://developer.android.com/index.html?hl=pt-br" hreflang="pt-br">
<link rel="alternate" href="http://developer.android.com/index.html?hl=ru" hreflang="ru">
<link rel="alternate" href="http://developer.android.com/index.html?hl=vi" hreflang="vi">
<link rel="alternate" href="http://developer.android.com/index.html?hl=zh-cn" hreflang="zh-cn">
<link rel="alternate" href="http://developer.android.com/index.html?hl=zh-tw" hreflang="zh-tw">
<title>
Android Developers
</title>
<!-- STYLESHEETS -->
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto+Condensed">
<link rel="stylesheet"
href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
title="roboto">
<link href="/static/css/default.css?v=2016052807" rel="stylesheet" type="text/css">
<!-- JAVASCRIPT -->
<script src="//www.google.com/jsapi" type="text/javascript"></script>
<script src="https://developer.android.com/_static/23ecca3dc9/js/android_3p-bundle.js" type="text/javascript"></script>
<script type="text/javascript">
var toRoot = '/';
var metaTags = "";
var devsite = true;
var useUpdatedTemplates = true;
var devsiteLang = 'en';
var pageType = 'none';
var ANDROID_LANGUAGES = [
'en','es','in','ja','ko','pt-br','ru','vi','zh-cn','zh-tw'
];
</script>
<script src="/static/js/docs.js?v=2016052807" type="text/javascript"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-5831155-1', 'android.com');
ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'}); // New tracker);
ga('send', 'pageview');
ga('universal.send', 'pageview'); // Send page view for new tracker.
</script>
</head>
<body class="gc-documentation none None full-width" itemscope itemtype="http://schema.org/Article">
<a href="#top" id="skip-to-main">Skip to content</a>
<header id="header-wrapper">
<div class="dac-header" id="header">
<div class="dac-header-inner">
<a class="dac-nav-toggle" data-dac-toggle-nav href="" title="Open navigation">
<span class="dac-nav-hamburger">
<span class="dac-nav-hamburger-top"></span>
<span class="dac-nav-hamburger-mid"></span>
<span class="dac-nav-hamburger-bot"></span>
</span>
</a>
<a class="dac-header-logo" href="https://developer.android.com/index.html">
<img class="dac-header-logo-image" src="https://developer.android.com/static/images/android_logo.png"
srcset="https://developer.android.com/static/images/android_logo_2x.png 2x"
width="32" height="36" alt="Android"> Developers</a>
<ul class="dac-header-tabs">
<li>
<a class="dac-header
我也试过使用UrlConnection
,但结果并没有什么不同。这是在实际设备(三星Galaxy Note 10.1运行非官方Cyanogen Mod)和AVD(Atom x64与Android 6.0)上测试的。
我也试过了一些网址,但结果却完全相同(响应在某处被切断)。
我真的不知道接下来该怎么做。你能建议吗?
答案 0 :(得分:0)
在浏览器中实际加载页面后,一些数据加载了javaScript)下载javaScripts并对其进行分析)
答案 1 :(得分:0)
试试这个:
public static String readResponseBody(Response response) throws IOException {
BufferedReader reader = new BufferedReader(response.body().charStream());;
StringBuilder stringBuilder = new StringBuilder();
while (true) {
String line = reader.readLine();
if (line == null)
break;
stringBuilder.append(line);
}
return stringBuilder.toString();
}
答案 2 :(得分:0)
向每位参与者道歉。似乎图书馆/平台按预期工作。问题可能在于DDMS。
我已经尝试阅读整个html,然后在DDMS上显示最后几个字符(使用Log类),结果显示它是html </html>
的结束标记。我很确定结果会整体回归。
但是如果我将整个字符串放入日志函数中,那么它会被大约4000个字符切掉。可能是adb缓冲区限制或其他。