繁体   English   中英

java或node.js在发送或接收字符串时删除一个字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM