我有一个 Android 应用程序。它将数据发送到基于 Java 的程序。安卓代码:
Socket socket = new Socket(InetAddress.getByName("10.0.3.2"), 5555);
OutputStream sout = socket.getOutputStream();
DataOutputStream out = new DataOutputStream(sout);
out.writeUTF(jsonLoginData.toString());
// IN jsonLoginData i put some values in another part of code
// jsonLoginData = new JSONObject();
// jsonLoginData.put("login",login);
// jsonLoginData.put("password",password);
out.flush();
out.close();
所以在另一方面我有基于 Java 的 proram,它正在监听 5555 端口并获取数据:
// var "s" is a socked listening 5555 port
InputStream is = s.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(s.getInputStream()));
String line;
String r = "";
StringBuilder content = new StringBuilder();
// read from the urlconnection via the bufferedreader
while ((line = bufferedReader.readLine()) != null)
{
r = r + line;
}
bufferedReader.close();
System.out.println("\n ==>" + r);
但问题是每次我在 var "r"中有额外的字符。 控制台向我显示:
==> <{"password":"6f3fa6ad89a459af8e1819c514059b3","login":"456"}
==> ={"password":"e516fac382793b462d6a19fa849db53a","login":"456"}
==> B{"password":"6f3fa6ad89a459af8e1819c514059b3","login":"456111414"}
如您所见,“{...}”之前有一些奇怪的符号,例如“<”或“=”或“B”。 不明白为什么我会这样......
最佳答案
不要使用 DataOutputStream
。只需将字节写入 OutputStream
。
OutputStream sout = socket.getOutputStream();
byte[] bytes = jsonLoginData.toString().getBytes("UTF-8");
sout.write(bytes);
关于java - writeUTF 后的额外字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30288846/