1

我正在从 android 中的 AsyncTask 向服务器发送 HTTP 发布请求发布请求。

我在管理响应方面面临的问题。这里我是如何阅读回复的。

HttpEntity entity =response.getEntity();
if (entity != null) {

    DataInputStream in = new DataInputStream( entity.getContent());
    String str;
    while (( str = in.readLine()) != null){


    Log.e("Debug","Server Response second url"+str); 

 }
   in.close();
}

问题是我得到的响应是零散的,但我希望它们是一体的

当前响应

 Server Response second url
 Server Response second url<header><status>Success</status><message>Check the Numbers:
 Server Response second url123456.</message><vbal>5005</vbal></header>

预期响应

<header><status>Success</status><message>Check the Numbers:123456.</message><vbal>5005</vbal></header>

如果我将它变成一件,我可以轻松解析 xml 响应并获取所需的值。

4

2 回答 2

1

这应该适合你:

StringBuilder sb = new StringBuilder();
String str;
while ((str = in.readLine()) != null) {
    sb.append(str);
}
in.close();
str = sb.toString(); //here you have the string you need.
Log.e("Debug","Server Response second url" + str); 
于 2012-04-26T06:55:43.320 回答
1

如果您有 Apache 公共资源:

Reader in = new InputStreamReader(entity.getContent(), "UTF-8");

StringWriter writer = new StringWriter();
IOUtils.copy(in, writer);

String str = writer.toString();

除此以外,

final char[] buffer = new char[0x10000];
StringBuilder out = new StringBuilder();
Reader in = new InputStreamReader(entity.getContent(), "UTF-8");

try {
    int read;

    do {
        read = in.read(buffer, 0, buffer.length);
        if (read > 0)
            out.append(buffer, 0, read);
    } while (read >= 0);
} finally {
  in.close();
}

String str = out.toString();
于 2012-04-26T06:58:31.400 回答