ランダムな文字列テキストを投稿しようとしていますが、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'];
?>
これにより、「名前を含む」 '+' がスペースに置き換えられて返されます。
読んでくれてありがとう、そしてあなたの助けに感謝します。
Bog 標準の base64 でエンコードされたデータは、 URL セーフではありません。少なくとも文字+
と=
問題が発生します。
少なくとも PHP で独自にロールする必要がある URL セーフなバリアントを使用するか、base64 データを URL エンコードする必要があります。
PHP では、これは次のようになります。
$url = sprintf(
'http://example.com/foo.php?data=%s',
urlencode( base64_encode( $some_data ) )
);
出力: http://example.com/foo.php?data=ZmFydGJhbGxzMQ%3D%3D
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加