当我调用Web服务时,数据没有以正确的方式出现。有些块有字符串,整数,字符表示json格式的混合数据。
1)当我使用此approch转换数据时......
StringBuffer sb = new StringBuffer();
byte[] buf = new byte[256];
int n = 0;
while ((n = StrReader.read(buf)) > 0)
{
sb.append(new String(buf,0,n));
}
String returnContent = sb.toString();
System.out.println(new String(returnContent));
StrReader.close();
}
输出......
text/htmlj
~"115.252.128.200", "roles": { "1": "anonymous user" }, "session": "", "cache": 0 } } }
No stack trace
2)当我使用此approch转换数据时......
dis = new DataInputStream(hc.openInputStream());
byte[] data1 = new byte[20];
int len = 0;
StringBuffer strBuffer = new StringBuffer();
while ( -1 != (len = dis.read(data1)) )
{
received = new String(data1, 0, len);
System.out.println(received);
}
输出....
text/html
j
~Salse, "#data": { "se
ssid": "fef51cf48aca
46e3b3aedafc02860f25
", "user": { "uid":
0, "hostname": "115.
252.128.200", "roles
": { "1": "anonymous
user" }, "session":
"", "cache": 0 } }
}
Outer---->>>}
No stack trace
注意......'收到'变量在循环时丢失了我们的数据......
答案 0 :(得分:1)
问题似乎是:为什么局部变量'received'只有一个打印到控制台的文本片段。这是因为为DataInputStream中读取的每批字节分配了一个新字符串。
这段代码似乎没有简明扼要地完成工作 - 例如为什么要使用DataInputStream - 所以或许询问手头的大型任务会更有用。