2011-08-29 4 views
3

WebService를 사용하여 데이터를 가져오고 있지만 62 개의 9 레코드 만 얻었습니다. 이것이 버퍼 크기의 문제라고 생각합니다. 맞습니까?Inputstream Reader에서 버퍼 크기를 어떻게 바꿀 수 있습니까?

다음 코드를 사용하여 WebService에서 데이터를 가져오고 Webserivce는 php로 개발됩니다.

public JSONObject PostConnectionObject(String strUrl,ArrayList<NameValuePair> alstNameValuePair) { 
     InputStream mInputStream = null; 
     try { 
      //This is the default apacheconnection. 
      HttpClient mHttpClient = new DefaultHttpClient(); 

      //Pathe of serverside 
      HttpPost mHttpPost = new HttpPost(strUrl); 
      if(alstNameValuePair!=null) 
      { 
       //post the valur you want to pass. 
       mHttpPost.setEntity(new UrlEncodedFormEntity(alstNameValuePair)); 
      } 

      //get the valu from the saerverside as response. 
      HttpResponse mHttpResponse = mHttpClient.execute(mHttpPost); 
      HttpEntity mHttpEntity = mHttpResponse.getEntity(); 
      mInputStream = mHttpEntity.getContent(); 

      } 
      catch (Exception e) { 
      // TODO Auto-generated catch block 
      Log.e(strTAG,"Error in HttpClient,HttpPost,HttpResponse,HttpEntity"); 
      } 

     String strLine = null; 
     String strResult = null; 

     //convert response in to the string. 
     try { 
       BufferedReader mBufferedReader = new BufferedReader(new InputStreamReader(mInputStream,"iso-8859-1"), 8); 
       StringBuilder mStringBuilder = new StringBuilder(); 
       while((strLine = mBufferedReader.readLine()) != null) { 
       mStringBuilder.append(strLine + "\n"); 
       } 
       mInputStream.close(); 
      strResult = mStringBuilder.toString(); 
      System.out.println("Value of Result :"+strResult); 
      } 
      catch (Exception e) { 
       // TODO Auto-generated catch block 
       //System.out.println("Error in BufferedReadering"); 
       Log.e(strTAG,"Error in BufferedReadering"); 
      } 
+0

위의 예를 보내주십시오. –

답변

1

InputStreamReader의 설명서에는 사용하는 버퍼의 크기를 설정할 수있는 방법이 없습니다. 버퍼의 크기는 구현 자의 몫이다.

코드에서 BufferedReader()에 8의 버퍼 크기를 사용합니다. 따라서 8 (BufferedReader()의 두 번째 매개 변수)을 변경하여 BufferedReader의 버퍼 크기를 변경할 수 있습니다.

나는 그것이 도움이 될 것이라고 생각하지 않습니다. BufferedReader는 버퍼 크기가 줄 길이보다 훨씬 작아도 전체 줄을 반환합니다.

코드가 직설적으로 보이며 데이터가 전송되지 않을 것으로 판단됩니다.

+0

감사합니다 user804056, 정말 좋은 설명과 나는 8, 16 (BufferReader()의 두 번째 param)을 16,32 등으로 바꾸려고했지만, 아무런 효과가 없다. 같은 수의 레코드 (데이터)가있다. 나는 너의 마지막 문장을 이해할 수 없나? –

+0

질문의 코드가 올바르게 보입니다. System.out에 9 개의 레코드 만 인쇄된다면 서버에 의해 9 개의 레코드 만 전송되었다는 것과 서버의 코드를 살펴 봐야한다고 생각합니다. [curl] (http://curl.haxx.se/docs/manpage.html)을 사용하여 서버가 모든 레코드를 다시 보내고 있는지 확인합니다. – abh

+0

하지만 웹 브라우저에서 웹 서핑 링크를 열면 완전한 데이터가 표시되므로 해핑이 무엇이고 왜 그런지 알 수 없습니까? –

관련 문제