通过POST将数据从Java发送到PHP

时间:2012-12-12 15:29:34

标签: java php http rest post

一方面,我有一个Java程序,它一直在为数据库提供数据。另一个是Web服务器(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个字段组成,这些字段可以产生一些大数据。

我的问题是: 如何我可以在一个内插入我的数据库条目(如果一个HTTP请求容量已满,则可以根据需要插入数据条目)并获取结果数据PHP文件方面? 额外奖励:使用之前的解决方案,我该如何压缩这些数据?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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