![](/img/trans.png)
[英]Sending and receiving data through a socket: Node.JS server, Java client
[英]java or node.js removes one character when sending or receiving a string
我正在尝试从Java(android)应用程序将字符串发送到node.js服务器。 但是一个角色消失在中间的某个地方,我真的不知道为什么。
要发送,我使用HttpUrlConnection(conn)并发送如下字符串:
try {
OutputStream os = conn.getOutputStream();
os.write(json.getBytes());
os.close();
} catch (Exception e) {
e.printStackTrace();
}
这是发送时的base64编码字符串,接收时的字符串:
khVGUBH2kNAR5PPRy7v5dO5iz48Rc7benYARu78\/9wY=\n
khVGUBH2kNAR5PPRy7v5dO5iz48Rc7benYARu78/9wY=\n
因此已删除了一个反斜杠。
在节点中,我使用以下命令:
exports.getString = function(req, res) {
var string = req.body.thestring;
}
输出两个字符串中的后一个。
var express = require('express'),
http = require('http'),
stylus = require('stylus'),
nib = require('nib');
var app = express();
app.configure(function () {
app.use(express.logger('dev'));
//app.use(express.bodyParser());
app.use(express.json());
app.use(express.urlencoded());
app.use(app.router);
}
关于如何获得失踪角色的任何想法?
缺少的反斜杠字符很可能在node.js端消失了。
根据对以下问题的选择答案: 关于JavaScript正斜线的两部分问题
就JS而言/ /和\\ /在字符串内是相同的
因此,也许Java的修复程序可以通过使用String的replaceAll
方法用\\\\ /替换所有出现的\\ /来解决您的问题:
os.write(json.replaceAll("\\/", "\\\\/").getBytes());
请注意, replaceAll
返回新字符串, 并且不会更改原始字符串。
使base64编码url安全可以解决我的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.