0

mysql Db に保存されている画像のタイトルを取得したかったのですが、Json を使用してこれを行う必要があることがわかりました。現在、.php ファイルがあります。

<?php
mysql_connect("localhost","xx","xx");
mysql_select_db("xx");

$q=mysql_query("SELECT title FROM field_title");
while($e=mysql_fetch_assoc($q))
        $output[]=$e;

print(json_encode($output));

mysql_close();
?>

次のように出力します。

[{"title":"titleone"},{"title":"titletwo"},{"title":"titlethree"}]

これらのタイトルを単純な配列リストに入れたいのですが、出力されたデータと配列リスト自体を接続する方法がわかりません。

ArrayList<String> list = new ArrayList<String>();  
for (??) {  
    list.add(string);  
}  

これを簡単な方法で行うことは可能ですか?この例を見たことがありますが、理解できないようです:

http://www.helloandroid.com/tutorials/connecting-mysql-database

ありがとう。

編集

OK、httppost 経由で接続できました。しかし、アプリを実行すると、最初からクラッシュするだけです...

// http post
        InputStream inputStream = null;
        String result = null;
        try {
            DefaultHttpClient   httpclient = new DefaultHttpClient(new BasicHttpParams());
        HttpPost httppost = new HttpPost("http://www.webmention.com/bosshunting.php");
        // Depends on your web service
        httppost.setHeader("Content-type", "application/json");


        HttpResponse response = httpclient.execute(httppost);           
        HttpEntity entity = response.getEntity();
        } catch (Exception e) {
            Log.e("log_tag", "Error in http connection " + e.toString());
        }
        // convert response 
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
            StringBuilder sb = new StringBuilder();

            String line = null;
            while ((line = reader.readLine()) != null)
            {
                sb.append(line + "\n");
            }
            result = sb.toString();

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



        // parse json data
        try {
            JSONArray jArray = new JSONArray(result);
            ArrayList imageUrls = new ArrayList();
            for (int i = 0; i < jArray.length(); i++) {
                JSONObject json_data = jArray.getJSONObject(i);

                imageUrls.add(json_data.getString("url"));
            }

        } catch (JSONException e) {
            Log.e("log_tag", "Error parsing data " + e.toString());
        }

正しい方法で配列にアイテムを追加するかどうかわかりません..そうではないと思いますか? titleone、titletwo、titlethree の arraylist imageUrls を取得しようとしています

4

2 に答える 2

0

こんにちは、 json の応答をここで確認しました。Json は true です。私はあなたがここでミススタックをしていると思います

try {
            JSONArray jArray = new JSONArray(result);
         ArrayList imageUrls = new ArrayList(); 
         for (int i = 0; i < jArray.length(); i++)
         { JSONObject json_data = jArray.getJSONObject(i); 
            imageUrls.add(json_data.getString("title")); }
         } catch (JSONException e) 
         { Log.e("log_tag", "Error parsing data " + e.toString()); }

    }
于 2012-09-04T16:36:37.923 に答える
0

私の出力が間違っていたようです。

これが機能したので:

   List<String> list = new ArrayList<String>();
        String string1 = "https://www.link.com/file1.jpg";
        String string2 = "https://www.link.com/file2.jpg";
        list.add(string1);
        list.add(string2);
        imageUrls = (String[]) list.toArray(new String[0]);

私は次のことを試しました:

InputStream inputStream = null;
        String result = null;
        try {
            DefaultHttpClient   httpclient = new DefaultHttpClient(new BasicHttpParams());
        HttpPost httppost = new HttpPost("http://www.file.com/connect.php");
        httppost.setHeader("Content-type", "application/json");

        HttpResponse response = httpclient.execute(httppost);           
        HttpEntity entity = response.getEntity();
        } catch (Exception e) {
            Log.e("log_tag", "Error in http connection " + e.toString());
        }
        // convert response 
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
            StringBuilder sb = new StringBuilder();

            String line = null;
            while ((line = reader.readLine()) != null)
            {
                sb.append(line + "\n");
            }
            result = sb.toString();

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

        try {
            JSONArray jArray = new JSONArray(result);
         List<String> list = new ArrayList<String>();
         for (int i = 0; i < jArray.length(); i++)
         { JSONObject json_data = jArray.getJSONObject(i); 

            list.add(json_data.getString("url"));

         } imageUrls = (String[]) list.toArray(new String[0]);
        }catch (JSONException e) 
         { Log.e("log_tag", "Error parsing data " + e.toString()); }

    }

しかし残念ながら、これもエラーになります...上記のログファイルと同じエラーのようです..

于 2012-09-05T07:57:39.947 に答える