0

このコードを試していましたが、null になります。場所の名前を教えてくれるはずです。私のコードの問題は何ですか?場所IDを指定して場所の詳細を取得したい。しかし、私もデバッグしましたが、常にnullを返していました

コード

String result = "";
                InputStream is = null;
                // the year data to send
                ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                nameValuePairs.add(new BasicNameValuePair("place_id", "2"));

                // http post
                try {
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpPost httppost = new HttpPost(
                            "http://example.com/getAllPeopleBornAfter.php");
                    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                    HttpResponse response = httpclient.execute(httppost);
                    HttpEntity entity = response.getEntity();
                    is = entity.getContent();
                } catch (Exception e) {
                    Log.e("log_tag", "Error in http connection " + e.toString());
                }
                // convert response to string
                try {
                    BufferedReader reader = new BufferedReader(
                            new InputStreamReader(is, "iso-8859-1"), 8);
                    StringBuilder sb = new StringBuilder();
                    String line = null;
                    while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                    }
                    is.close();

                    result = sb.toString();
                } catch (Exception e) {
                    Log.e("log_tag", "Error converting result " + e.toString());
                }

                // parse json data
                try {
                    JSONArray jArray = new JSONArray(result);
                    for (int i = 0; i < jArray.length(); i++) {
                        JSONObject json_data = jArray.getJSONObject(i);
                        TextView z = (TextView)findViewById(R.id.textView1);
                        z.setText(json_data.getString("place_id"));
                    }
                } catch (JSONException e) {
                    Log.e("log_tag", "Error parsing data " + e.toString());
                }
            }

        });

PHP

<?php
include "db_config.php";

$q=mysql_query("SELECT 'name' FROM places WHERE place_id='".$_REQUEST['place_id']."'");

while($e=mysql_fetch_assoc($q))
        $output[]=$e;

print(json_encode($output));

mysql_close();
?>
4

2 に答える 2

0

情報が少なすぎて助かりません。PHP スクリプトが何かを返しますか? http 応答のログは何を示していますか? 多分それはあなたのコードで問題なく、null は問題が他の場所に潜んでいるときに得られるべきものですか?

ところで: あなたの PHP コードは非常に悪いです。SQL インジェクションを悪用する可能性があります。一般に、返されるはずのデータを消費する前に、クエリ (または fopen など) が成功したかどうかを常に確認する必要があります。すべてがうまくいったという保証はありません。エラーチェックの習慣は、堅実なソフトウェア開発に不可欠です。また、純粋な PHP スクリプト ファイルであり、HTML などと混合されていない場合は、"?>" を使用しないことをお勧めします (混合も悪いことです)。

于 2012-07-20T14:35:33.767 に答える
0

これが答えです

ref.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub

                String result = "";
                InputStream is = null;

                ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                nameValuePairs.add(new BasicNameValuePair("place_id", "3"));

                try {
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpPost httppost = new HttpPost(
                            "http://hopscriber.com/test.php");
                    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                    HttpResponse response = httpclient.execute(httppost);
                    HttpEntity entity = response.getEntity();
                    is = entity.getContent();

                } catch (Exception e) {
                    Log.e("log_tag", "Error in http connection " + e.toString());
                }
                // convert response to string
                try {
                    BufferedReader reader = new BufferedReader(
                            new InputStreamReader(is, "iso-8859-1"), 8);
                    StringBuilder sb = new StringBuilder();
                    String line = null;
                    while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                    }
                    is.close();
                    result = sb.toString();
                } catch (Exception e) {
                    Log.e("log_tag", "Error converting result " + e.toString());
                }

                // parse json data
                String version = null;
                try {
                    JSONArray jArray = new JSONArray(result);
                    for (int i = 0; i < jArray.length(); i++) {
                        JSONObject json_data = jArray.getJSONObject(i);
                        version = json_data.getString("name");
                        Toast.makeText(getBaseContext(), version,
                                Toast.LENGTH_LONG).show();
                        TextView x = (TextView) findViewById(R.id.textView1);
                        x.setText(version);
                    }
                } catch (JSONException e1) {
                    Toast.makeText(getBaseContext(), version, Toast.LENGTH_LONG)
                            .show();
                } catch (ParseException e1) {
                    e1.printStackTrace();
                }
            }

        });

php

<?php

include "db_config.php";

$query = mysql_query("SELECT * FROM places WHERE place_id='".mysql_real_escape_string($_POST[place_id])."'");

while($e=mysql_fetch_assoc($query))
    $output[]=$e;

print(json_encode($output));

mysql_close();
?>

助けてくれてありがとう

于 2012-07-20T15:18:50.160 に答える