用Java发送HTTPPOST请求,并用PHP接受POST请求


Sending an HTTP POST request in Java and accepting the POST request in PHP

我需要做的是通过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请求,我们非常感谢任何帮助。

现在,我建议你在做这件事的时候记住一些事情。

  1. 尝试使用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

  1. 利用会话使用应用程序时,打开它,进行一些更改,然后关闭它。这很像会话。电脑知道你是谁。它知道您何时启动应用程序,何时结束。但在互联网上有一个问题:网络服务器不知道你是谁或你做什么,因为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.
    ?>
    

    这里有一个参考,以及会话。

  2. 使用SSL安全套接字层(SSL)技术是在传输层实现的安全性。SSL允许web浏览器和web服务器通过安全连接进行通信。在这种安全连接中,正在发送的数据在发送之前被加密,然后在接收和处理之前被解密。浏览器和服务器在发送任何数据之前都会对所有流量进行加密。SSL解决了以下重要的安全注意事项。

a身份验证:在您首次尝试通过安全连接与web服务器通信期间,该服务器将以服务器证书的形式向您的web浏览器提供一组凭据。证书的目的是验证网站是谁和它声称是什么。在某些情况下,服务器可能会请求一个证书,证明客户端是谁和他声称是什么(这被称为客户端身份验证)。

b机密性:当数据在网络上的客户端和服务器之间传递时,第三方可以查看和拦截这些数据。SSL响应是加密的,因此数据不能被第三方解密,并且数据保持机密。

c完整性:当数据在网络上的客户端和服务器之间传递时,第三方可以查看和拦截这些数据。SSL有助于保证数据不会在传输过程中被第三方修改。

这里也有一些参考资料。SSL建立文档,带Java 的SSL