在Java中发送HTTP POST请求并在PHP中接受POST请求

时间:2016-03-26 16:09:15

标签: java php http post

我需要做的是通过HTTP POST请求向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接受HTTP POST请求的正确方向帮助我,或者如果我甚至正确地发送帖子请求,我们非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

现在,有一些事情,我建议你记住这一点。

  1. 尝试使用JSON: Json代表 JavaScript Object Notation 。它是一种轻量级,基于文本,与语言无关的数据交换格式,便于人和机器读写。

    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'];
    ...
    
  2. 以下是Json

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

      以下是sessions的参考资料。

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

    3. 一个。 身份验证:在您最初尝试通过安全连接与Web服务器通信时,该服务器将以Web服务器证书的形式向您的Web浏览器显示一组凭据。证书的目的是验证该站点是谁以及它声称的内容。在某些情况下,服务器可能会请求客户端是谁以及它声称是谁的证书(称为客户端身份验证)。

      机密性:当数据在网络上的客户端和服务器之间传递时,第三方可以查看和拦截此数据。 SSL响应已加密,因此第三方无法破译数据,数据仍然保密。

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

      而且,以下是一些参考资料。 SSL Establishment DocumentationSSL with Java