6

ユーザーがサーバーからいくつかの機能をパラメーター化できるロケーションアプリケーションを作成しているため、サーバーがユーザーの電話との通信を開始するようにします。しかし、最初に、php.ini から Android との通信を開始したいと考えています。

PHPサーバーからAndroidフォンと通信する方法はありますか?

私はすでにHTTPを使用してAndroidからサーバーへの通信を使用していますが、AndroidJSONObjectへのphp呼び出しには何も見つかりません。

電話を鳴らすことができるアプリケーションとまったく同じだと思います。

4

5 に答える 5

1

GET メソッド

Android クライアントをサーバーに接続し、JSON メッセージを渡す必要があります。クライアントがサーバーからデータを取得して切断する必要がある場合は、通常の HTTP タイプの GET を使用できます。

WebSocket メソッド

ただし、JSON を双方向で渡す長時間の TCP 接続が必要であると判断した場合は、WebSocket などを検討する必要があります。Android WebSocket のデモを作成しました。Android クライアントはデフォルトで websocket.org エコー サーバーに接続しますが、これは簡単に変更できます。

PHP WebSockets implementationも見つけました。

プッシュ方式

クライアントが接続を開始せずに、サーバーからクライアントにメッセージをプッシュする計画がある場合は、GCM (Google Cloud Messaging) のようなものが必要になります。これは、 GCM と PHPをカバーする記事です。

于 2013-03-07T08:25:01.657 に答える
1

Android 用の Google クラウド メッセージングを確認してください。

Google Cloud Messaging for Android (GCM) は、サーバーからユーザーの Android 搭載デバイスにデータを送信できるようにするサービスです。これは、サーバーから取得する新しいデータがあることをアプリに通知する軽量のメッセージ (たとえば、友人がアップロードした映画) である場合もあれば、最大 4kb のペイロード データを含むメッセージである場合もあります (アプリはインスタント メッセージングを好みます)。メッセージを直接消費できます)。

于 2013-03-07T08:26:55.573 に答える
0

phpを使用してmysqlにデータを保存するには、以下のリンクを使用してください。phpサーバーから2つの応答を受け取るため、Webサービスを作成する必要があります。

1)Json

2)xml

例を示した場合は、以下のリンクにアクセスしてください 。phpでの基本的なWebサービスの作成

詳細については、このリンクにもアクセスしてください http://phpmaster.com/lets-talk-1/

于 2013-03-07T08:53:10.543 に答える
0

一般に、サーバー側からクライアント側への接続の作成は複雑です。理由は次のとおりです。

  1. クライアントはプライベート IP アドレスを使用する場合があります。
  2. デバイスがファイアウォールの内側に接続されている場合、インバウンド接続が拒否されることがあります。
  3. バックグラウンドで実行でき、サーバーで新しいメッセージを監視できる場合は、アプリケーションをインストールする必要があります。

Web の使用: JavaScript API、特にServer Sent Eventsなどの新しい HTML5 機能をどのようにサポートするかはブラウザーによって異なります。

サーバーが HTTP 経由または専用のサーバー プッシュ プロトコルを使用して Web ページにデータをプッシュできるようにするために、この仕様では EventSource インターフェイスが導入されています。

于 2013-03-07T08:29:44.280 に答える
0

HTTPpReq クラスを使用できます:

public class HttpReq {

public   String send (String url){
    //send a http request and get the result    
    InputStream is = null;
    String result = "";

    try{
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(url);

        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());
    }

      try
        {
           BufferedReader reader = new BufferedReader(new InputStreamReader(is),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());
    }


    return result;
}

}

次に、このクラスを使用して接続を確立し、php ファイルを呼び出してデータを JSONObject として取得します。

 ht = new HttpReq();
             // send a http request with GET 
             x=ht.send("http://10.0.2.2/myFolder/myFile.php");
             JSONArray jArray;
            JSONObject json_data;

         String h[]=x.split("<");

           try {

                jArray = new JSONArray(h[0]);
                json_data = jArray.getJSONObject(0);
                url=json_data.getString("url");

            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

Php ファイルでは、このメソッドを使用して JSON データを取得したり、Android アプリに送信したりできます。

Json_decode($string); 

Json_encode($string);

それがあなたを助けることを願っています:)

于 2013-03-07T08:57:30.267 に答える