2010-12-18 84 views
1

我想在android 2.1上使用java客户端来使用其余的WCF服务。 它对小反应很有效。当我试图通过获得1000 + char响应reader.read(缓冲区)未能读取所有字符时推进一点。这导致脚本的最后一行返回:JsonException在字符8193未终止的字符串“{板,...Java客户端无法从wcf rest服务读取大的响应

我的android设备开始得到这个错误之前,模拟器android明星得到它(字符1194而不是8193 )任何人都知道如何得到完整的信息

客户端代码:?

HttpGet request = new HttpGet(SERVICE_URI + "/GetPlates"); 
request.setHeader("Accept", "application/json"); 
request.setHeader("Content-type", "application/json"); 
DefaultHttpClient httpClient = new DefaultHttpClient(); 
HttpResponse response = httpClient.execute(request); 
HttpEntity responseEntity = response.getEntity(); 
char[] buffer = new char[(int)responseEntity.getContentLength()]; 
InputStream stream = responseEntity.getContent(); 
InputStreamReader reader = new InputStreamReader(stream); 
reader.read(buffer); 
stream.close();   
JSONArray plates = new JSONArray(new String(buffer)); 

服务器配置:

<webHttpBinding> 
    <binding name="big_webHttpBinding" maxReceivedMessageSize="4097152" maxBufferSize="4097152" maxBufferPoolSize="4097152"> 
     <readerQuotas maxStringContentLength="4097152" maxArrayLength="4097152" maxBytesPerRead="4097152" maxNameTableCharCount="4097152" maxDepth="4097152"/> 
    </binding> 
    </webHttpBinding> 

回答

5

而不是

char[] buffer = new char[(int)responseEntity.getContentLength()]; 
InputStream stream = responseEntity.getContent(); 
InputStreamReader reader = new InputStreamReader(stream); 
reader.read(buffer); 
stream.close(); 

做到这一点:

String jsonText = EntityUtils.toString(responseEntity, HTTP.UTF_8); 
+0

谢谢,现在的作品。 – taminov 2010-12-21 00:18:32