【问题标题】:Sending data from Java to PHP via POST通过 POST 从 Java 向 PHP 发送数据
【发布时间】:2012-12-12 15:29:34
【问题描述】:

一方面,我有一个不断为数据库提供数据的 Java 程序。另一方面是网络服务器(Apache)。我需要通过 REST Web 服务一次将多个条目从程序传输到远程 Web 服务器。 虽然我可以毫不费力地将一对值从一个发送到另一个(使用 Java 端的 HttpClient 和另一端写入服务器自己的数据库的 PHP 文件),但我缺乏关于如何构建 HTTP 的知识请求数据。

到目前为止,我一直在使用实体:

List<NameValuePair> list = new ArrayList<NameValuePair>();
list.add(new BasicNameValuePair("field1", "aaa"));
list.add(new BasicNameValuePair("field2", "bbb"));

httppost.setEntity(new UrlEncodedFormEntity(list));

并在我的 PHP 文件中接收它:

<?php
    $field1=$_POST["field1"];
    $field2=$_POST["field2"];
    $con= mysql_connect("localhost","root");
    if(!$con) die("Not able to connect");
    mysql_select_db("mydb",$con);
    mysql_query("INSERT INTO `mytable` (`field1`, `field2`) VALUES ('$field1', '$field2')");
    mysql_close($con);
?>

效果很好。简单易行。但是现在,如前所述,我希望从我的数据库中传输几个条目。每个条目由 35 个字段组成,产生一些大数据。

我的问题是: 如何我可以在 ONE 中插入我的数据库条目(或者如果一个 HTTP 请求容量已满,则可以根据需要插入多个)并在PHP文件端? 奖励:使用以前的解决方案,我如何压缩该数据?

【问题讨论】:

    标签: java php http rest post


    【解决方案1】:

    您可以使用 JSON 进行快速简单的传输。对于解码,PHP 支持$array = json_decode($json_string, TRUE);

    不确定压缩。您是否要以这种方式传输大量数据以使其具有相关性?

    【讨论】:

    • 假设传输介质真的很贵:>
    【解决方案2】:

    嗯,你正在做的事情很容易导致 SQL 注入。确保在使用 mysql_real_escape_string 或更好的准备语句运行插入查询之前转义数据。

    您可以使用Google Protocol Buffers,而不是使用 JSON。您需要 JAVA 和 PHP 扩展才能使用协议缓冲区,但这是一种二进制协议,可以非常好地压缩数据,并允许您灵活地定义具有相同属性的不同“可重复”对象(条目),这样当您打开协议缓冲区时PHP端,数据利用起来会很方便。

    【讨论】:

    • 感谢您的警告。如果它们的大小效率如此之高,我将明确地尝试尝试这些协议缓冲区。
    • 您需要一个 JAVA 和 PHP 库来使用协议缓冲区。 “drslump”创建的那个对我有用。
    • Protobufs 有一个原生的 JAVA 实现,并且有人发布了一个 PHP 版本(不过必须先尝试一下)。否则 JSON 可能会成功。
    • “一切”都可以,JSON 应该比许多其他解决方案做得更好,但您要求轻量级协议 :)
    猜你喜欢
    • 2018-02-21
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 2017-08-23
    • 2017-02-24
    相关资源
    最近更新 更多