Java在将文本发布到php url时将“+”运算符替换为“”
我试图发布一个随机的字符串文本,但在我的php文件中看起来是这样的:
er2hZ+JL2BJDJHU7gPBBvU2pNXEmBdzWs2E5SAfMlssy62/FooDrCi/ajhCW412Q4nRjel+ezE2v
CS090Jhskg==
该字符串包含+
运算符,但是,当java将其发布到我的php文件时,我得到以下响应:
er2hZ JL2BJDJHU7gPBBvU2pNXEmBdzWs2E5SAfMlssy62/FooDrCi/ajhCW412Q4nRjel ezE2v
CS090Jhskg==
正如您所看到的,+
操作符已替换为空白
我也使用了DataOutputStream ps = new DataOutputStream(con.getOutputStream());
和PrintStream
,两者都有相同的问题。我的java代码如下:
try {
// open a connection to the site
URL url = new URL("http://www.yourdomain.com/yourphpscript.php");
URLConnection con = url.openConnection();
// activate the output
con.setDoOutput(true);
PrintStream ps = new PrintStream(con.getOutputStream());
// send your parameters to your site
ps.print("firstKey=Name+Contains+");
// we have to get the input stream in order to actually send the request
con.getInputStream();
// close the print stream
ps.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
我的php代码如下:
<?php
echo $_POST['firstKey'];
?>
这将返回“Name Contains”“+”并替换为空格
感谢您的阅读,并感谢您的帮助
# 1 楼答案
Bog标准base64编码数据是不URL安全的。至少字符
+
和=
会导致问题您要么需要使用URL安全的变体,至少需要在PHP中使用自己的变体,要么对base64的数据进行URL编码
在PHP中,这看起来像:
输出:
http://example.com/foo.php?data=ZmFydGJhbGxzMQ%3D%3D