0

一方では、データベースにフィードし続けるJavaプログラムがあります。もう一方のWebサーバー(Apache)。プログラムからRESTWebサービスを介して離れた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内に挿入し(または1つのHTTPリクエスト容量がいっぱいの場合は必要な数だけ)、PHPファイル側で結果のデータをフェッチするにはどうすればよいですか?ボーナス:以前のソリューションでは、どうすればそのデータを圧縮できますか?

4

2 に答える 2

1

さて、あなたがしていることは簡単に SQL インジェクションにつながります。挿入クエリを mysql_real_escape_string またはそれ以上の準備済みステートメントで実行する前に、必ずデータをエスケープしてください。

JSON を使用する代わりに、 Google Protocol Buffersを使用できます。プロトコル バッファを使用するには、JAVA と PHP の両方の拡張機能が必要ですが、これはバイナリ プロトコルであり、データを驚くほど圧縮し、同じプロパティを持つさまざまな「反復可能な」オブジェクト (エントリ) を柔軟に定義できるため、 PHP 側では、データの活用が容易になります。

于 2012-12-12T16:14:18.073 に答える
1

JSON を使用して、すばやく簡単に転送できます。デコードについては、PHP がサポートしています$array = json_decode($json_string, TRUE);

圧縮については不明です。関連性を持たせるために、この方法で大量のデータを転送しますか?

于 2012-12-12T15:54:05.310 に答える