【发布时间】:2012-03-08 11:50:12
【问题描述】:
我想用以下方法读取网页的内容,但我只能读到 60-70% 的内容。
我尝试了 2 种不同的方法来阅读网页,结果都一样。我也尝试了不同的网址。我没有收到错误或超时。
我做错了什么?
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);
//}
}
@编辑
我已经用 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();
【问题讨论】:
-
乍看之下没有任何问题。可以发网址吗?
-
我尝试了很多网址,但每次都得到相同的结果。如果一个网站的来源不是很小,我没有得到完整的来源。
-
好的,你能发布一个不适合你的网址吗?
-
好的,例如。 kicker.de(大来源)或具有较小来源的提要:rss.kicker.de/news/aktuell
-
刚刚针对 kicker.de 测试了您的第一个代码,我收到了完整的内容。您是否在 Android 平台之外尝试过您的代码?
标签: java android web webpage http-get