2012-04-25 19 views
3

私はAndroidアプリケーションからサーバー上の特定のPHP関数を呼び出し、いくつかのパラメータを送信したいと思います。これまで私は、HttpClientを使ってPHPファイルを開き、Jsonにデータ転送を実行し、それを私のアプリで表示できることを達成しました。だから、私は特定の関数を呼び出してそれにパラメータを送ることができるようになりたい、どうすればいいのですか?おかげさまで アンドロイドからPHP関数を呼び出しますか?

答えて

4

私はJSONを使用して、新しいユーザー名を登録するために書いたコードの一部です:

public static boolean register(Context myContext, String name, String pwd) { 

      byte[] data; 
      HttpPost httppost; 
      StringBuffer buffer; 
      HttpResponse response; 
      HttpClient httpclient; 
      InputStream inputStream; 
      List<NameValuePair> nameValuePairs; 

      try { 
        httpclient = new DefaultHttpClient(); 
        httppost = new HttpPost(
            "http://X.X.X.X/register.php"); 
        // Add your data 
        nameValuePairs = new ArrayList<NameValuePair>(2); 
        nameValuePairs.add(new BasicNameValuePair("User", name.trim())); 
        nameValuePairs.add(new BasicNameValuePair("Password", pwd.trim())); 
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

        // Execute HTTP Post Request 
        response = httpclient.execute(httppost); 
        inputStream = response.getEntity().getContent(); 

        data = new byte[256]; 

        buffer = new StringBuffer(); 
        int len = 0; 
        while (-1 != (len = inputStream.read(data))) { 
          buffer.append(new String(data, 0, len)); 
        } 

        inputStream.close(); 
      } 

      catch (Exception e) { 
        Toast.makeText(myContext, "error" + e.toString(), Toast.LENGTH_LONG) 
            .show(); 
        return false; 
      } 


      if (buffer.charAt(0) == 'Y') { 

        return true; 
      } else { 

        return false; 
      } 

    } 

あなたが気付いた場合:その部分で

  nameValuePairs = new ArrayList<NameValuePair>(2); 
        nameValuePairs.add(new BasicNameValuePair("User", name.trim())); 
        nameValuePairs.add(new BasicNameValuePair("Password", pwd.trim())); 
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

をあなたはパラメータを送信することができます。

このメソッドは単にUserとPasswordをregister.phpに送信します。 ユーザーが既に使用されている場合は、「N」が戻されます。それ以外の場合はUserを作成して 'Y'を返します。

サーバ側では、そのように、POST情報として扱う:

$user = $_POST['User']; 

それはあなたのケースのために行う必要があります:)

乾杯を!

+0

からウェブサービスへのパラメータとして都市名を送信するだけで、PHPが必要な場合は教えてください;) – N3sh

+0

ありがとうございました! ちょうどもう1つの質問ですが、例えば、関数getSettings($ value) "を呼び出すことができます。これはAndroidに何かを送り返しますか?なぜなら、私は同じPHPファイル内にいくつかの関数を必要とし、必要なときにそれらを別々に呼び出すからです。 そのコマンドはありますか? もう一度ありがとうございます。 – Wolf87

+0

そこに表示されている場合は、既に何かが返されています( 'Y'または 'N'のいずれか)。 それは、char、文字列などのような単純なものであれば、バッファを読み込んでレスポンスをビルドし、それに従って使用することができます。それ以外の場合は余分なことをする必要があります:私のこの質問をチェックしてください、それは参考になります;)http://stackoverflow.com/questions/10186266/android-json-mysql-query-gives-networkonmiththreadexception – N3sh

1

これらの特定のPHP関数を必要なパラメータとともにWebサービスで表示またはラップアップし、実行するためにアンドロイドからの入力パラメータを含むWebサービスを呼び出します。

+0

このような意味ですか? $ sql = mysql_query( "INSERT INTO CITY(CITY_NAME)VALUES( '" $ _ REQUEST [' c_name ']。 "')"); – Wolf87

+0

は、クエリ全体をパラメータとして送信するよう求めていますか?はいの場合は、間違っています。 Webサービスにクエリ部分を含める必要があります。電話番号 – waqaslam

関連する問題