2014-01-16 43 views
0

我想使用此代码HttpURLConnection的切割的InputStream返回

private InputStream downloadUrl(String urlString) throws IOException { 
URL url = new URL(urlString); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
conn.setReadTimeout(10000 /* milliseconds */); 
conn.setConnectTimeout(15000 /* milliseconds */); 
conn.setRequestMethod("GET"); 
conn.setDoInput(true); 
InputStream stream = conn.getInputStream(); 
return stream; 
} 

当我尝试使用此输入流得到一个字符串我缺少的beggining并最终获得从Web服务器的inputStrem,所以它似乎正在削减一些东西。 但是使用DefaultHttpClient,HttpGet和HttpResponse的结果是好的。

private String downloadPHP(String urlString){ 


      String st = null;// aqui el XML descargado 

      DefaultHttpClient client = new DefaultHttpClient(); 
      HttpGet httpGet = new HttpGet(URL);   

      try { 
       HttpResponse execute = client.execute(httpGet); 
       InputStream content = execute.getEntity().getContent(); 
       st = StringUtils.inputStreamToString(content); 


      } 
      catch (Exception e) { 
       //Log.i(Constants.DEBUG_TAG, e.getMessage()); 

      } 

      return st; 
    } 

由于谷歌正在推荐使用HttpUrlConnection,有什么想法来解决这个问题吗?

这是从inoutstream

public static String inputStreamToString(final InputStream stream) throws IOException { 
BufferedReader br = new BufferedReader(new InputStreamReader(stream)); 
    StringBuilder sb = new StringBuilder(); 
    String line = null; 
    while ((line = br.readLine()) != null) { 
     sb.append(line + "\n"); 
    } 
    br.close(); 
    return sb.toString(); 
} 
+0

解决了它我很快测试了你的代码,它似乎工作正常。不过,我把它全部放在同一个功能中。 “错过开始和结束”是什么意思? – MoRe

+1

嗨,我正在向Web服务器发出请求以从数据库获取一些信息。它应该返回一个xml格式的字符串,如 – Javier

+1

嗨,我正在向Web服务器发出请求以从数据库获取一些信息。它应该返回一个字符串在xml fomrat包括所有的标签等。使用DefaultHttpClient一切都很好,但使用HttpUrlConnection返回的信息是worng,我缺少第一个标签的一部分(文档中的第一个),信息被切入 – Javier

回答

2

我们再次检查了代码,也检查了服务器端,最后发现服务器发送的数据有问题。服务器没有以适当的格式发送数据。我们已经改变了PHP代码,现在使用HttpUrlCOnnection,因为它在原始问题中描述了一切正在工作。 在服务器端信息没有得到XML格式,我们已经使用PHP DOM

0

获取字符串试试下面的代码从输入流中读取的方法。

byte[] buf;  
ByteArrayOutputStream baos = new ByteArrayOutputStream(8192); 
int read = inputStream.read(); 

while (read != -1) { 
    baos.write((byte) read); 
    read = inputStream.read(); 
} 

baos.flush(); 
buf = baos.toByteArray(); 
相关问题