我需要做的是通过HTTPPOST请求向php脚本发送用户名和密码,这样我就可以在数据库中查询正确的信息。目前我被困在发送POST请求和接收它
要发送用户名和密码,我使用以下方法:
public class post {
public static void main(String[] args) throws ClientProtocolException, IOException {
HttpClient httpclient = HttpClients.createDefault();
HttpPost httppost = new HttpPost("http://www.example.com/practice.php");
// Request parameters and other properties.
List<NameValuePair> params = new ArrayList<NameValuePair>(2);
params.add(new BasicNameValuePair("username", "user"));
params.add(new BasicNameValuePair("password", "hunter2"));
httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
//Execute and get the response.
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
try {
// do something useful
} finally {
instream.close();
}
}
}
}
我用来收集信息的php脚本如下,它很简单,但目前只是用于测试。
<?php
$username = $_POST['username'];
$password = $_POST['password'];
echo "username = $username<br>";
echo "password = $password<br>";
?>
我想知道是否有人能帮助我,让我朝着正确的方向接受Java中php中的HTTPPOST请求,或者我是否正确发送了POST请求,我们非常感谢任何帮助。
现在,我建议你在做这件事的时候记住一些事情。
-
尝试使用JSON:Json代表JavaScript对象符号。它是一种轻量级的、基于文本的、独立于语言的数据交换格式,便于人类和机器进行读写。
public static void main(String[] args){ JSONObject obj = new JSONObject(); obj.put("username", username); obj.put("password", password); System.out.print(obj); // And then, send this via POST Method. } }
对于Php部分,
... $data = file_get_contents("php://input"); $json = json_decode($data); $username = $json['username']; $password = $json['password']; ...
这里有一个很好的参考Json
-
利用会话使用应用程序时,打开它,进行一些更改,然后关闭它。这很像会话。电脑知道你是谁。它知道您何时启动应用程序,何时结束。但在互联网上有一个问题:网络服务器不知道你是谁或你做什么,因为HTTP地址不能保持状态。会话变量通过存储要在多个页面上使用的用户信息(例如用户名、喜爱的颜色等)来解决这个问题。默认情况下,会话变量会一直持续到用户关闭浏览器。
<?php $_SESSION["user"] = "green"; echo "Session variables are set."; // Now store this in your database in a separate table and set its expiry date and time. ?>
这里有一个参考,以及会话。
-
使用SSL:安全套接字层(SSL)技术是在传输层实现的安全性。SSL允许web浏览器和web服务器通过安全连接进行通信。在这种安全连接中,正在发送的数据在发送之前被加密,然后在接收和处理之前被解密。浏览器和服务器在发送任何数据之前都会对所有流量进行加密。SSL解决了以下重要的安全注意事项。
a身份验证:在您首次尝试通过安全连接与web服务器通信期间,该服务器将以服务器证书的形式向您的web浏览器提供一组凭据。证书的目的是验证网站是谁和它声称是什么。在某些情况下,服务器可能会请求一个证书,证明客户端是谁和他声称是什么(这被称为客户端身份验证)。
b机密性:当数据在网络上的客户端和服务器之间传递时,第三方可以查看和拦截这些数据。SSL响应是加密的,因此数据不能被第三方解密,并且数据保持机密。
c完整性:当数据在网络上的客户端和服务器之间传递时,第三方可以查看和拦截这些数据。SSL有助于保证数据不会在传输过程中被第三方修改。
这里也有一些参考资料。SSL建立文档,带Java 的SSL