2011-01-13 10 views
4

誰でも上記の解決策を提供できますか?Android JSONからPHPサーバーへ戻る

今のところ、自分のサーバーにJSON要求を送信するだけです(たとえば{picture:jpg、color:green})。PHPがデータベースにアクセスしてからサーバーのデータベースからファイル名を返すようにします(アンドロイドにファイルをダウンロードさせてください - 問題ではありません)

誰もが最初に私にこれを助けるAndroidフレームワークを提案できますか? - サーバー上のPHPファイルにPOST JSONを送信する

そして、JSONをphpの読み込み可能な形式にするPHPスクリプト(データベースへのアクセスは問題ではありませんが、JSONをオブジェクトに入れてデータベース)

おかげで、下記のリンクのための

EDIT

おかげで、私は怠惰のうち、これを求めていないよ、それはJSON文字列を送信してもらうために、私の見せかけのできないことにいらだちの外です正解を出してください。

だから私はいくつかのコードを表示し、見つけてみましょう、なぜ私は起きていない起こるべきだと思う:

GETのURLをPHPで

http://example.com/process/json.php?service=GOOGLE 

<?php 

// decode JSON string to PHP object 
$decoded = json_decode($_GET['json']); 

// I'm not sure of which of the below should work but i've tried both. 
$myService = $decoded->service; //$service should equal: GOOGLE 
$myService = $decoded->{'service'}; //$service should equal: GOOGLE 

// but the result is always $myService = null - why? 


?> 
+1

のhttpをしたい、これまで:以下のPOSTデータを編とサービス

<?php $data = file_get_contents('php://input'); $json = json_decode($data); $service = $json->{'service'}; print $service; ?> 

とAndroidのコードを返します取得します。 //php.net/manual/en/book.json.php – thetaiko

+0

OK、PHP側を修正しました。何らかの理由で、php.iniにpost_max_size = 10Mを設定すると、GETではなくPOSTデータの少量が停止していました。 – Matt

答えて

14

OK、私はPHPを持っています。 onCreateで

()

path = "http://example.com/process/json.php"; 

    HttpClient client = new DefaultHttpClient(); 
    HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); // Timeout 
                      // Limit 
    HttpResponse response; 
    JSONObject json = new JSONObject(); 
    try { 
     HttpPost post = new HttpPost(path); 
     json.put("service", "GOOGLE"); 
     Log.i("jason Object", json.toString()); 
     post.setHeader("json", json.toString()); 
     StringEntity se = new StringEntity(json.toString()); 
     se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, 
       "application/json")); 
     post.setEntity(se); 
     response = client.execute(post); 
     /* Checking response */ 
     if (response != null) { 
      InputStream in = response.getEntity().getContent(); // Get the 
                   // data in 
                    // the 
                    // entity 
      String a = convertStreamToString(in); 
      Log.i("Read from Server", a); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

、あなたが

private static String convertStreamToString(InputStream is) { 

    BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
    StringBuilder sb = new StringBuilder(); 

    String line = null; 
    try { 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      is.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    return sb.toString(); 
} 
+0

ありがとうございました:) –

2

(私は作業を表示することができますgetを使用して)あなたが必要とするのは、組み込みのjson_decodeです.jsonを逆シリアル化してオブジェクトを返します(または、trueを第2引数として渡した場合は連想配列)。

Android側では、おそらくHTTP Librariesを使用してHTTPリクエストを実行し、レスポンスを処理します。 (しかし、実際にAndroid用に開発された人が私を修正するかもしれません)

関連する問題