Android读取URL的内容(结果中缺少内容)
我有以下读取url内容的代码Android读取URL的内容(结果中缺少内容),android,httpwebrequest,Android,Httpwebrequest,我有以下读取url内容的代码 public static String DownloadText(String url){ StringBuffer result = new StringBuffer(); try{ URL jsonUrl = new URL(url); InputStreamReader isr = new InputStreamReader(jsonUrl.openStream()); BufferedR
public static String DownloadText(String url){
StringBuffer result = new StringBuffer();
try{
URL jsonUrl = new URL(url);
InputStreamReader isr = new InputStreamReader(jsonUrl.openStream());
BufferedReader in = new BufferedReader(isr);
String inputLine;
while ((inputLine = in.readLine()) != null){
result.append(inputLine);
}
}catch(Exception ex){
result = new StringBuffer("TIMEOUT");
Log.e(Util.AppName, ex.toString());
}
in.close();
isr.close();
return result.toString();
}
问题是返回的结果中有4065个字符之后我缺少内容。有人能帮我解决这个问题吗
注:
我试图读取的url包含一个json响应,因此所有内容都在一行中。我想这就是我丢失一些内容的原因。试试以下方法:
try {
feedUrl = new URL(url).openConnection();
} catch (MalformedURLException e) {
Log.v("ERROR","MALFORMED URL EXCEPTION");
} catch (IOException e) {
e.printStackTrace();
}
try {
in = feedUrl.getInputStream();
json = convertStreamToString(in);
}catch(Exception e){}
而convertStreamToString是:
private static String convertStreamToString(InputStream is) throws UnsupportedEncodingException {
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
以下是从web获取脚本输出的更清晰版本:
public String getOnline(String urlString) {
URLConnection feedUrl;
try {
feedUrl = new URL(urlString).openConnection();
InputStream is = feedUrl.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "");
}
is.close();
return sb.toString();
}catch(Exception e){
e.printStackTrace();
}
return null;
}
请记住,您不能从主线程下载任何内容。它必须来自一个单独的线程。使用类似于:
new Thread(new Runnable(){
public void run(){
if(!isNetworkAvailable()){
Toast.makeText(getApplicationContext(), getResources().getString(R.string.nointernet), Toast.LENGTH_LONG).show();
return;
}
String str=getOnline("http://www.example.com/script.php");
}
}).start();
如何使用HttpClient?我是说org.apache.http.client.HttpClient.hi我也有同样的问题。你能帮我吗。你做了什么来纠正它???我还没有找到这个问题的解决方案。我可以知道这个方法是否忽略了空行并输入?