如何更改Inputstream Reader中的缓冲区大小?
我正在使用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");
}
InputStreamReader的文档没有提供设置它使用的缓冲区大小的方法。缓冲区的大小取决于实现者。
在你的代码中,你使用BufferedReader()的缓冲区大小为8。所以你可以通过改变8(BufferedReader()的第二个参数)来改变BufferedReader缓冲区的大小。
虽然我不认为这会有所帮助。即使缓冲区的大小远小于行的长度,BufferedReader仍会返回整行。
你的代码看起来很简单,我怀疑数据永远不会被发送。
感谢user804056,真的很好的描述,我试图改变8(BufferReader()的第二参数)为16,32等,但你没有任何影响,我有相同数量的记录(数据)。我不能完全理解你最后一句话,你能解释一下吗? –
问题中的代码看起来正确。如果只有9条记录被打印到System.out,那么我怀疑只有9条记录是由服务器发送的,并且您应该接下来查看服务器上的代码。 我会使用[curl](http://curl.haxx.se/docs/manpage.html)来查看服务器是否发回所有记录。 – abh
但是当我在网络浏览器中打开webserive链接以便显示完整的数据时,我不知道什么是攻丝,为什么? –
请寄给我你的上面的例子。 –