0

現在、サーバー側スクリプトの$_POST配列内のいくつかの変数にアクセスするのに問題があります。

コンテキスト:PHPを使用してAndroidデバイスからmySQLサーバーにいくつかの値を送信しています。「新しいルートを作成」すると、phpとjavaは正常に機能します。次に例を示します。

投稿する変数のリストを作成する:

List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("name", name));
        params.add(new BasicNameValuePair("startLat", startLat));
        params.add(new BasicNameValuePair("startLong", startLong));
        params.add(new BasicNameValuePair("endLat", endLat));
        params.add(new BasicNameValuePair("endLong", endLong));
        params.add(new BasicNameValuePair("waypoints", waypoints.toString()));
        params.add(new BasicNameValuePair("rating", rating));
        params.add(new BasicNameValuePair("difficulty", difficulty));
        params.add(new BasicNameValuePair("enjoyability", enjoyability));
        params.add(new BasicNameValuePair("count", count));
        params.add(new BasicNameValuePair("sum", sum));
        params.add(new BasicNameValuePair("countDiff", countDiff));
        params.add(new BasicNameValuePair("sumDiff", sumDiff));
        params.add(new BasicNameValuePair("countEnjoy", countEnjoy));
        params.add(new BasicNameValuePair("sumEnjoy", sumEnjoy));

次に、メソッドを呼び出して投稿します。

        if(method == "POST"){
            // request method is POST
            // defaultHttpClient
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);
            httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
            //System.out.println(httpPost.getURI().toString());
            //System.out.println(httpPost.getEntity().toString());
            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();

そして、これは正常に機能し、値は$_POST配列のPHPスクリプトで利用できます。私が抱えている問題は、以下を使用してまったく同じプロセスを実行する場合です(この場合、「ルートを更新している」ため、変数がいくつか少ないため、これは更新用のPHPスクリプトに反映されます。ルート。:

            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("name", name));
            params.add(new BasicNameValuePair("rating", Double.toString(currentRating)));
            params.add(new BasicNameValuePair("difficulty", Double.toString(currentDiff)));
            params.add(new BasicNameValuePair("enjoyability", Double.toString(currentEnjoy)));
            params.add(new BasicNameValuePair("count", Double.toString(currentCount)));
            params.add(new BasicNameValuePair("sum", Double.toString(currentSum)));
            params.add(new BasicNameValuePair("countDiff", Double.toString(currentDiffCount)));
            params.add(new BasicNameValuePair("sumDiff", Double.toString(currentDiffSum)));
            params.add(new BasicNameValuePair("countEnjoy", Double.toString(currentEnjoyCount)));
            params.add(new BasicNameValuePair("sumEnjoy", Double.toString(currentEnjoySum)));


            JSONObject jsonEdit = jsonParser.makeHttpRequest(url_edit,
                    "POST" +
                    "", params);

$ _POST配列は、phpスクリプトサーバー側では空です。これは少し曖昧かもしれませんが、ご理解いただければ幸いです。私は両方の方法でデータを送信するまったく同じプロセスを実行していますが、後者は空です。

4

1 に答える 1

2

あなたはインターンで味付けされた古い==vs問題を抱えています。equalsString

こいつが犯人

if(method == "POST"){

する必要があります

if(method.equals("POST")){

最初の方法は、プレーンな String オブジェクトで機能します。"POST"他のインスタンスと比較すると、どのインスタンスも true になります"POST"(理由を知るには String interning を参照してください)。ただし、後者の場合、何かおかしいことがあります。

JSONObject jsonEdit = jsonParser.makeHttpRequest(url_edit,
                "POST" + //Ooooops, what is this?
                "", params);

ここで"POST"==を比較"POST"+""します ... これは内容ではなく参照で比較します! そして、2番目のものは別のものでありfalse、比較の結果...

于 2013-03-19T14:29:31.897 に答える