我不明白:在android中,我没有得到返回的完整字符串,我输入了stringbody。我已经检查过字符串是完全保存的,但是当它传递给字符串时它就会中断。在同一应用程序的桌面版本中,结果是成功的。但在Android中,字符串末尾的随机部分会丢失。如果我尝试在丢失后保存结果字符串,则字符串将保存在同一位置。我不使用任何口音或特殊字符。 来自测试的示例:
首先写:
这是一个带有随机消息的测试生物,我正在写作。 如果这被削减,就像我期待的东西将会被遗忘 出。让我们看看会发生什么。
一次保存可以保存:
这是一个带有随机消息的测试生物,我正在写作。 如果这个被削减,就像我期待的东西将被遗漏
第二次保存:
这是一个带有随机消息的测试生物,我正在写作。 如果这像我一样被削减
代码是
protected void gravarPerfil() throws UnsupportedEncodingException {
MultipartEntity entity = new MultipartEntity();
StringBody sAcerca = null, sLoc = null;
DefaultHttpClient client = new DefaultHttpClient();
if (cookie != null) {
client.getCookieStore().addCookie(cookie);
}
HttpPost post = new HttpPost(address + "/dinamicas/editarPerfil");
FileBody imagebin = null;
if (imgfile != null) {
imagebin = new FileBody(imgfile);
}
Log.v("msg", acerca.getText().toString());
这是我的文件体不加载整个字符串的部分
sAcerca = new StringBody(acerca.getText().toString());
sLoc = new StringBody(local.getText().toString());
try {
entity.addPart("acerca", sAcerca);
entity.addPart("localizacao", sLoc);
if (imgfile != null) {
entity.addPart("foto", imagebin);
}
post.setEntity(entity);
HttpResponse response = client.execute(post);
} catch (Exception e) {
e.printStackTrace();
}
答案 0 :(得分:0)
你的意思是最后的日志行给你一些奇怪的东西吗?:
Log.v("msg", response.toString());
因为它会。
试试这个:
InputStream responseStream = response..getEntity().getContent();
String textResponse = StreamConverter.convertStreamToString(responseStream);
Log.v("msg", "Received:"+ textResponse);
public class StreamConverter {
public static String convertStreamToString(InputStream inputStream) throws IOException {
if (inputStream != null) {
Writer writer = new StringWriter();
char[] buffer = new char[1024];
try {
Reader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"),1024);
int n;
while ((n = reader.read(buffer)) != -1) {
writer.write(buffer, 0, n);
}
} finally {
inputStream.close();
}
return writer.toString();
} else {
return "";
}
}
}
答案 1 :(得分:0)
没有任何合理的解决方案,所以我应用了一下。我发现删除的末尾总是在5到13个字符之间......所以我在字符串末尾添加15#,然后在服务器端删除。它不漂亮,但它的工作原理。