繁体   English   中英

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

[英]Sending data from Java to PHP via 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文件端获取结果数据? 额外奖励:使用之前的解决方案,我该如何压缩这些数据?

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM