我有一些工作的Java代码,它可以执行以下操作:

URL myUrl = new URL("http://localhost:8080/webservice?user=" + username + "&password=" + password + "&request=x");

HttpURLConnection myConnection = (HttpURLConnection) myUrl.openConnection();
myConnection.setRequestMethod("POST");

// code continues to read the response stream

但是,我注意到我的Web服务器访问日志包含了所有连接用户的明文密码。我想从访问日志中删除它,但是Web服务器管理员声称这需要在我的代码中进行更改,而不是通过Web服务器配置进行更改。

我尝试将代码更改为以下内容:
URL myUrl = new URL("http://localhost:8080/webservice");

HttpURLConnection myConnection = (HttpURLConnection) myUrl.openConnection();
myConnection.setRequestMethod("POST");
// start of new code
myConnection.setDoOutput(true);
myConnection.addRequestProperty("username", username);
myConnection.addRequestProperty("password", password);
myConnection.addRequestProperty("request", "x");

// code continues to read the response stream

现在,访问日志不包含用户名/密码/请求方法。但是,Web服务现在会引发异常,表明它没有收到任何用户名/密码。

客户代码中我做错了什么?我还尝试使用“setRequestProperty”代替“addRequestProperty”,它具有相同的损坏行为。

最佳答案

我实际上在another question on stackoverflow.中找到了答案

正确的代码应为:

URL myUrl = new URL("http://localhost:8080/webservice");

HttpURLConnection myConnection = (HttpURLConnection) myUrl.openConnection();
myConnection.setRequestMethod("POST");
myConnection.setDoOutput(true);

DataOutputStream wr = new DataOutputStream(myConnection.getOutputStream ());
wr.writeBytes("username=" + username + "&password="+password + "&request=x");

// code continues to read the response stream

关于java - HttpUrlConnection addRequestProperty方法未传递参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15551676/

10-14 15:29