2014-01-16 2 views
0

내가 내가 내가 beggining과 끝을 잃었 문자열을 얻기 위해이되는 InputStream를 사용하려고하면이 코드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; 
} 

를 사용하여 웹 서버에서 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; 
    } 

Google은 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

안녕하세요, 데이터베이스에서 정보를 얻기 위해 웹 서버에 요청하고 있습니다. – Javier

+1

과 같은 xml 형식의 문자열을 반환해야합니다. 안녕하세요, 웹 서버에 요청하여 데이터베이스에서 정보를 가져옵니다. 그것은 모든 태그를 포함하여 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(); 
관련 문제