{"property":[{"prop_Age":0,"prop_Area":300,"prop_Area_SqFeet":2700,"prop_Area_Unit":" Yards","prop_AvailableFor":"Sale","prop_Desc":"Ashok Vihar Phase-1, Individual House for Sale, Corner Freehold 300g Plot in (i) Block Ashok Vihar Phase I @rs 15 Cr","prop_ID":341,"prop_LastUpdatedDate":"","prop_Lease_ID":0,"prop_NumOfBaths":3,"prop_NumOfBeds":3,"prop_OnFloor":0,"prop_PostedDate":"2011-08-01","prop_Price":1.5E8,"prop_Title":"Ashok Vihar Phase-1, Individual House fo","propertyImages":[{"imageID":1042,"imageUrl":"http://localhost/barun/images/thumb.jpg","propertyID":341,"type":"thumb"},{"imageID":1043,"imageUrl":"http:////localhost/barun/images/gallery.jpg","propertyID":341,"type":"gallery"},{"imageID":1044,"imageUrl":"http:////localhost/barun/images/full.jpg","propertyID":341,"type":"full"}],"propertyLocations":{"proploc_AddressLine1":"ashok vihar phase .............................
* ANDROID收到数据并从响应中读取数据但未收到原始内容
一些数据从原始响应中截断
*
12-30 17:07:44.599: I/System.out(4348): Buffer data
is{"property":[{"prop_Age":0,"prop_Area":300,"prop_Area_SqFeet":2700,"prop_Area_Unit":"
Yards","prop_AvailableFor":"Sale","prop_Desc":"Ashok Vihar Phase-1, Individual House for Sale, Corner Freehold 300g Plot in
(i) Block Ashok Vihar Phase I @rs 15 Cr","prop_ID":341,"prop_LastUpdatedDate":"","prop_Lease_ID":0,"prop_NumOfBaths":3,"prop_NumOfBeds":3,"prop_OnFloor":0,"prop_P
ostedDate":"2011-08-01","prop_Price":1.5E8,"prop_Title":"Ashok Vihar Phase-1, Individual House
fo","propertyImages":{"phoneNumber1":0,"phoneNumber2":0,"usr_Email":"","usr_ID":341,"usr_�����������������������������������������
�����������������������������������������������������������������������������������������������������������������������������
�����������������������������������������������������������������������������������������������������������������������������
�����������������������������������������������������������������������������������������������������������������������������
�����������������������������������������������������������������������������������������������������������������������������
�����������������������������������������������������������������������������������������������������������������������������`
ANDROID代码接收数据:
int bytesRead = -1;
StringBuffer str = new StringBuffer();
byte[] bufferTest = new byte[1*1024];
try {
while ((bytesRead = instream.read(bufferTest)) >= 0) {
String line = new String(bufferTest);
str.append(line.toString());
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("Buffer data is" + str);
为什么Android客户端会以损坏的格式接收数据?
答案 0 :(得分:2)
我有一个类似的问题。你看到垃圾数据的原因是你已经分配了1024个字节,但实际数据要少得多。其余的字节都用垃圾填充
您可以通过以下方式解决此问题
int actual = 0;
int length = 1024;
responseBody = new byte[length];
while ((bytesread < length) && (actual != -1)) {
actual = instream.read(responseBody, bytesread, length - bytesread); //
// Logger.log("After is.read(), actual is " + actual);
if (actual != -1) {
bytesread += actual;
}
}
String response = new String(responseBody, "UTF-8");
(或者,对于效果更好的解决方案)
// Assuming your character set is UTF-8
InputStreamReader reader = new InputStreamReader(instream, "UTF-8");
StringBuilder b = new StringBuilder();
try {
char[] buffer = new char[1024];
int count;
while ((count = reader.read(buffer)) != -1) {
b.append(buffer, 0, count);
}
} finally {
reader.close();
}
String response = b.toString();
让我知道会发生什么。