私はアンドロイドとPHPの両方のモバイル開発に慣れています。ありがとう。非公式リクエストの結果が投稿後に更新されないvolley
必要条件は、アンドロイドデバイスのsqliteデータベースからgodaddyプラットフォームのmysqlサーバーに、ボタンをクリックすることでデータをアップロードしてからダウンロードする機能を開発することです。
- 私は2つの別々のWebサービス開発:私はアンドロイドのための機能をアップロードし、ダウンロードするsynchelperクラスを開発し、私は
- ボレーの要求APIを使用GoDaddyのサーバー
- 上でホストされてダウンロード機能のためのアップロード機能のための1と1を。
PROBLEM - これらは別々のボタン、次々によってクリックで呼び出されたときに、アップロードとダウンロードの機能が正常に動作します。しかし、アップロードとダウンロードの機能を1つのボタンに統合すると、アップロード機能はうまく動作しますが、ダウンロード機能はアップロードされたばかりのデータを含むmysqlデータベースの最新のイメージをダウンロードしません。
誰もがこれにいくつかの光を当てることができますか?ここで
は私のコードです:syncHelper.java
でMainActivityで
String read_animal_url = "http://www.careagriculture.com/get_all_animals3.php";
String insert_animals_url = "http://www.careagriculture.com/insert_animals25.php";
public void DeviceDataUpload() {
StringRequest postRequest = new StringRequest(Method.POST, insert_animals_url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
if (!(response == null)) {
JSONObject c = new JSONObject(response);
System.out.print(insert_animals_url + " response " + response.toString());
int success = c.getInt("success");
if (success == 1) {
localDBHelper.deleteAllAnimalFromDevice();
}
}
}catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}){
@Override
public Map<String, String> getParams(){
Map<String, String> params = localDBHelper.getAllAnimalMap();
return params;
}
@Override
public Priority getPriority() {
return Priority.HIGH;
}
};
AppController.getInstance().addToReqQueue(postRequest);
}
public void ServerDataDownload(){
JsonObjectRequest readAnimalReq = new JsonObjectRequest(Method.GET, read_animal_url, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
System.out.print(read_animal_url+" response "+response.toString());
int success = response.getInt("success");
if (success == 1) {
JSONArray ja = response.getJSONArray("animal");
localDBHelper.deleteAllAnimalFromServer();
for (int i = 0; i < ja.length(); i++) {
map.put("ANIMAL_ID", c.getString(TAG_ANIMAL_ID));
map.put("SUPERVISOR", c.getString(TAG_SUPERVISOR));
map.put("ANIMAL_TYPE", c.getString(TAG_ANIMAL_TYPE));
map.put("RECORD_TYPE", "S");
if (!c.isNull(TAG_GENDER))
map.put("GENDER", c.getString(TAG_GENDER));
if (!c.isNull(TAG_DATE_OF_BIRTH))
map.put("DATE_OF_BIRTH", c.getString(TAG_DATE_OF_BIRTH));
if (!c.isNull(TAG_DATE_PURCHASED))
map.put("DATE_PURCHASED", c.getString(TAG_DATE_PURCHASED));
if (!c.isNull(TAG_PURCHASE_PRICE))
map.put("PURCHASE_PRICE", c.getString(TAG_PURCHASE_PRICE));
if (!c.isNull(TAG_DATE_DISTRIBUTED))
map.put("DATE_DISTRIBUTED", c.getString(TAG_DATE_DISTRIBUTED));
if (!c.isNull(TAG_DATE_SOLD))
map.put("DATE_SOLD", c.getString(TAG_DATE_SOLD));
if (!c.isNull(TAG_SALE_PRICE))
map.put("SALE_PRICE", c.getString(TAG_SALE_PRICE));
Item_List.add(map);
localDBHelper.insertAnimalFromServer(map);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}){
@Override
public Priority getPriority() {
return Priority.LOW;
}
};
AppController.getInstance().addToReqQueue(readAnimalReq);
}
、私が呼ん:
syncButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (localDBHelper.getAllAnimalCount()>0) {
SyncHelper syncHelper = new SyncHelper(MainActivity.this);
syncHelper.DeviceDataUpload();
Toast.makeText(getApplicationContext(),"Upload Completed", Toast.LENGTH_LONG).show();
}
syncHelper.ServerDataDownload();
Toast.makeText(getApplicationContext(),"Sync Completed", Toast.LENGTH_LONG).show();
}
});
ありがとう、ありがとう、ありがとう!それは信じられないほど効果的です。あまりにも行動を説明してくれてありがとう! – vyxf