3

だから私はAndroidアプリケーションを書いています、そしてその一部は経度/緯度を取得するためにGPSを使用することになっています。そして、それらの値は、私も実行しているPHPサーバーに投稿することになっています。私が投稿している機能は次のとおりです。

public void doAll() {

Double locLat, locLon;
    try {
    locLat = locManager.getLastKnownLocation(locProvider).getLatitude();
    locLon = locManager.getLastKnownLocation(locProvider).getLongitude();
    } catch (NullPointerException e) {
    locLat = -1.0;
    locLon = -1.0;
    }
try {

    HttpClient client = new DefaultHttpClient();
    //we put all the parameters in the URL itself
    HttpPost request = new HttpPost("http://fatalatour.com/database.php?function=get_all&latitude="+Double.toString(locLat)+"&longitude="+Double.toString(locLon));

    ResponseHandler <String> responseHandler = new BasicResponseHandler();

   //List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
   //nameValuePairs.add(new BasicNameValuePair("latitude", Double.toString(locLat)));
   //nameValuePairs.add(new BasicNameValuePair("longitude", Double.toString(locLon)));
   //request.setEntity(new UrlEncodedFormEntity(nameValuePairs));

   String response = client.execute(request, responseHandler);
   Log.i("HOMI_RESPONSE", response.toString());

}

それを含む他のコードもありますが、実際にlocLatとlocLonの投稿に影響を与えるのはそれだけだと思います。

サーバー側には次のものがあります。

function get_all() {
            $lat = trim($_GET['latitude']);
            $lon = trim($_GET['longitude']);
            // DEBUG
            $f = fopen('debug.log', 'a');
            fprintf($f, 'get_all: '.print_r($_REQUEST, true)."\n");
            $result = mysql_query("SELECT * FROM homi_table");

            $num = 0; //# of homicides

            while ($row = mysql_fetch_assoc($result)) {
                    $d = distance($row['latitude'], $row['longitude'], $lat, $lon, "K");
                    if ($d < 100) { //number to change for distance filter
                            $num += 1;
        echo "fatality:".$row['slug']."~".strtoupper($row['name']).", Age ".$row['age']."\n".$row['date']."\nhttp://projects.latimes.com/homicide/post/".$row['slug']."~".$row['latitude']."~".$row['longitude'];


                            // GH: limiting the number of results to 100
                            if ($num == 100) {
                                    break;
                            }
                    }
            };
            echo $num;
            fprintf($f, "get_all: returning: ".$num."\n");
    }

現在、問題は$latと$lonの処理にあるようです。PHPの各アプリに静的な数値をハードコーディングすると、アプリは機能しますが、変数のままにすると(本来あるべき姿ですが)失敗します。どんな助けでも大歓迎です!

4

2 に答える 2

1

AndroidアプリケーションではPOSTリクエストを使用しており、PHPではGETパラメーターを読み取ります。他に何も思い浮かびません。

于 2012-04-19T18:26:42.493 に答える
0

作成したURLは、投稿ではなくHTTPGetのように見えます。投稿では、リクエストの本文にデータが投稿されます。

URLで公開されているパラメーターを気にしない場合は、AndroidコードでHTTPPostをHTTPGetに変更するだけです。そのようなものをURLに含めたくない場合は、Androidの投稿を少し作り直して(私が信じているコメントアウトされたコードに似ています)、代わりに$_POST変数にアクセスするようにphpコードを変更する必要があります。

于 2012-04-19T19:00:51.663 に答える