HTTPUrlConnection用Java将POST参数和二进制数据写入PHP

HTTPUrlConnection用Java将POST参数和二进制数据写入PHP,java,php,post,httpurlconnection,Java,Php,Post,Httpurlconnection,我正在尝试编写一个程序,这样我就可以使用$_POST['id']来指定一个id,并将其余的二进制数据写入“php://input". 我当前的Java代码如下所示: HttpURLConnection connection = (HttpURLConnection) new URL("https://example.com/write?id="+id).openConnection(); connection.setRequestMethod("POST"

我正在尝试编写一个程序,这样我就可以使用$_POST['id']来指定一个id,并将其余的二进制数据写入“php://input". 我当前的Java代码如下所示:

HttpURLConnection connection = (HttpURLConnection) new URL("https://example.com/write?id="+id).openConnection();
connection.setRequestMethod("POST");
connection.setDoInput(true);
connection.setDoOutput(true);
connection.addRequestProperty("Content-Type", "application/bin");
DataOutputStream os = new DataOutputStream(connection.getOutputStream());
os.flush();
gameLevel.writeCompressedBinary(os);
os.close();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String result = reader.readLine();
reader.close();
return result;
问题是,PHP文件处理时,$\u POST['id']不存在,但$\u REQUEST['id']存在。我不希望“id”在GET请求中可见。要完成我想做的事情,最好的方法是什么


我不能使用任何第三方库来实现这一点。

PHP仅在请求内容类型为
application/x-www-form-urlencoded
multipart/form data
时填充$\u POST。“我不希望GET请求上的“id”可见。”-模糊安全永远不会起作用。无论您是通过GET还是POST发送该值,差别都很小。您可以通过自定义HTTP头发送该值,然后从中获取该值。但是,不要再天真地以为会以任何方式、形式或形式来考虑“安全改进”。我说,因为我被告知这个职位应该用于这样的事情。都是通过HTTPS的,所以不管怎样数据都会被加密?如果没有区别的话,我想我可以坚持使用$\u request。GET和POST之间的决定应该主要基于是请求数据,还是更改/删除/修改数据;有关更深入的说明,请参阅。但这并不是一件绝对必须遵守的事情,有些情况下有理由对“规则”进行例外。如果您想在此处以
application/bin
的形式发送数据,则无法在其中轻松混合其他数据,因此可以使用GET或HTTP头传输ID。是的,HTTPS注意中间没有人能够读取数据。