我想通过以下方法阅读网页内容,但我只能获得60-70%的内容。
我尝试了两种不同的方法来阅读网页,两者都有相同的结果。我也试过不同的网址。我没有错误或超时。
我做错了什么?
URL url = new URL(uri.toString());
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try
{
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(in));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = br.readLine()) != null)
{
sb.append(line + "\n");
}
br.close();
this.content = sb.toString();
}
finally
{
urlConnection.disconnect();
}
和
HttpGet get = new HttpGet(uri);
HttpClient defaultHttp = new DefaultHttpClient(httpParameters);
HttpResponse response = defaultHttp.execute(get);
StatusLine status = response.getStatusLine();
if(status.getStatusCode() == HttpStatus.SC_OK)
{
HttpEntity entity = response.getEntity();
InputStream stream = entity.getContent();
String encoding = "utf-8";
//long length = entity.getContentLength();
//if(entity.getContentEncoding() != null)
//{
// encoding = entity.getContentEncoding().getValue();
//}
//if(length > 0)
//{
byte[] buffer = new byte[1024];
long read = 0;
do
{
read = stream.read(buffer);
if(read > 0)
{
this.content += new String(buffer, encoding);
}
}while(read > 0);
//}
}
@edit
我用C#和WinForms尝试过。我阅读了该网页的完整html源代码。 使用java-android它不起作用。
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.kicker.de");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string content = reader.ReadToEnd();
reader.Close();
response.Close();
答案 0 :(得分:0)
apache的util jar中的httpurlconnection限制了响应中的最大字节,我记不起它的数量了。
但是在大多数时候,你可能在UI线程中使用http conncetion,所以有时它不安全,也许会被杀死,你可以选择在线程中处理http请求而不是UI线程。所以我想知道你是否在UT线程中这样做
答案 1 :(得分:0)
我目前有同样的问题。我在一个简单的Java应用程序中尝试了我的代码,并收到了整个内容。但在Android上,内容不完整。这个问题现在已经有一年了。我猜你在此期间解决了它。你能加入你的解决方案吗?
修改强>: 我将内容写入Android设备上的文件中。内容已经完成! 似乎logcat没有显示你从Devie收到的完整输出。