2017-08-14 12 views
0

にPOJOを持つメソッドを呼び出すために(javaの)アンドロイドどのサーバーでは、サーバー

public class DbAccessor { 

    public Employee getEmployee(Long id) { 
     // fetch from database 
    } 

    public List<Employee> getEmployees(Criteria criteria) { 
     // fetch from database 
    } 

    public void createEmployee(Employee e) { 
     // persist 
    } 
} 

従業員や基準はPOJOのです。

アンドロイドデバイスからメソッドを呼び出すにはどうすればいいですか?それをWebサービスにする方法は? JsonまたはXML? RESTまたはSOAP?ご意見をお聞かせください。

答えて

0

Employee ||のデータを持つDBがすでにあると仮定します。保存された基準。 Android内からSQL DBにアクセスするのはおそらく可能ですが、db用のドライバが必要だと思います。私の選択は、DBにアクセスし、要求されたテーブルをJSONとして返すサーバーサイドスクリプトを呼び出すことです。 コンパイル「com.android.volleyバレーボール要求

アンドロイドコールサーバー非同期は、あなたは、Androidで コンパイル ':gson 2.8.0 com.google.code.gson' をGSONとバレーボールを使用していると想定します:ボレー:1.0.0'

import android.os.AsyncTask; 
import android.util.Log; 

import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.JsonObjectRequest; 
import com.google.gson.Gson; 
import com.google.gson.GsonBuilder; 

import org.json.JSONObject; 

/** 
* Created by Henrik Ekelin on 08/14/2017. 
*/ 
public class ServerRequest extends AsyncTask<Void, Void, String> { 

    private final static String TAG = ServerRequest.class.getSimpleName(); 
    private final static String API_URL = "URL/fetchJSON.php"; 

    private ServerMsgCallback callback; 

    public interface ServerMsgCallback { 
     void onRetrieved(Employee model); 

     void onError(String error); 
    } 

    public gay(ServerMsgCallback callback) { 
     this.callback = callback; 
     execute(); 

    } 

    @Override 
    protected String doInBackground(Void... voids) { 
     JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(API_URL, null, new Response.Listener<JSONObject>() { 

      @Override 
      public void onResponse(JSONObject response) { 
       Log.d(TAG, "onResponse() " + response.toString()); 

       Gson gson = new GsonBuilder().create(); 
       // Retrieve the fetched JSON as Employee POJO 
       Employee employee = gson.fromJson(response.toString(), Employee .class) 
       callback.onRetrieved(gson.fromJson(response.toString(), Employee.class)); 

      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.e(TAG, "onErrorResponse() " + error.getMessage()); 
       callback.onError(error.getMessage()); 

      } 
     }); 

     // Add the JSONObject to App Volley RequestQuew 
     App.getInstance().addToRequestQueue(jsonObjectRequest); 

     return null; 
    } 

} 

PHPスクリプトは

$db = null; 
// Connect to database. 
try { 
    $db = new pdo ('mysql:host=127.0.0.1:3306;dbname=DATABASE_NAME', 'USER', 'PASSWORD'); 
} catch (PDOException $ex) { 
    // Die with mercy 
    die (json_encode(array(
     'outcome' => false, 
     'message' => 'Unable to connect' 
    ))); 
} 

if ($db != null) { 

    // Retrieve the _POST msg from client as array 
    // {key -> value] 
    if (array_key_exists('msg', $_POST)) { 
     $data = json_decode($_POST ['msg'], true); 

     // Set the value from key 'id' 
     $id = $data ['id']; 

     // SQL statement retrieving the correct table with ID -> $id 
     // Prepare SQL statement 
     $s = $db->prepare('SELECT * FROM Employee WHERE ID = :id'); 
     // Bind the parameter :name 
     $s->bindParam(':id', $id, PDO::PARAM_STR); 
     // Execute 
     $s->execute(); 
     // Fetch the result 
     $r = $s->fetchAll(); 

     // Loop through the result 
     foreach ($r as $res) { 

      // Find the correct Emplyee with id 
      if ($res ['ID'] == $id) { 

       // Retrieve the table params and store them as an array 
       $arr = array('ID', $res['ID'], 'NAME', $res['NAME'], 'SOMETHING', $res['SOMETHING'], 'BADABING', $res['BADABING']); 

        // Echo the result ie: return JSON 
       echo json_encode(array("Employee" => $arr)); 
      } 
     } 

    } 

} 

$db = null; 
header('Name: ' . "/location/file.php"); 

グッドラックSQLサーバーに接続します!

+0

サーバー上では** Java **と表示されますが、まだPHPスクリプトが追加されています。 – androidnoobdev

+0

fetchJSON.phpファイルをサーバーに置いてAndroidやvoilaから呼び出すだけで問題ありません!コンテンツは、呼び出しから返されます – gekn76

+0

JavaサーバーはどのようにPHPファイルを実行することができますか?あなたは投票を得るためにいくつかの知識を持っているか、答えを出していますか? – androidnoobdev

関連する問題