2010-12-18 48 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