Так что я работаю с чем-то, чтобы вставить базу данных mysql, используя модификацию 2, но при плохом соединении данные не были вставлены в базу данных, но когда соединение установлено и стабилизировано, все данные не были отправлены в базу данных, было отправлено в базу данных, это сделает данные становятся двойными или более.
вот моя активность
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.interceptors().add(interceptor);
OkHttpClient client = builder.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();
RegisterAPI api = retrofit.create(RegisterAPI.class);
Call<Value> call = api.absensi(odometer, namaoutlet, ket, LocationLong, LocationLat, nilaiAbsen, kodeImei, img_new_name, fake_status);
call.enqueue(new Callback<Value>() {
@Override
public void onResponse(Call<Value> call, Response<Value> response) {
String value = response.body().getValue();
String message = response.body().getMessage();
progress.dismiss();
if (value.equals("1")) {
if(message.equals("timeout")){
call.cancel();
client.dispatcher().cancelAll();
}else {
UploadImageToServer();
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
Intent inLogin2 = new Intent(AbsensiActivity.this, MainActivity.class);
startActivity(inLogin2);
finish();
}
} else {
Toast.makeText(AbsensiActivity.this, message, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<Value> call, Throwable t) {
t.printStackTrace();
progress.dismiss();
call.cancel();
client.dispatcher().cancelAll();
if (call.isCanceled()) {
Log.e("TAG", "request was cancelled");
}
else {
Log.e("TAG", "other larger issue, i.e. no network connection?");
}
Toast.makeText(AbsensiActivity.this, "Data gagal di input, silahkan coba lagi", Toast.LENGTH_SHORT).show();
}
});
и это мой API
if($lng == "" || $lat == "" ){
$response["value"] = 0;
$response["message"] = "Masih mencari koordinat. Pastikan Koneksi dan GPS aktif.";
echo json_encode($response);
}elseif($rChecking > 0){
$response["value"] = 0;
$response["message"] = "Maaf,Anda sudah melakukan absensi.";
echo json_encode($response);
}elseif($rHide['loc_attedance']=="Y"){
//Cari Posisi Absensi
$dbPosisi = new database;
$dbPosisi->query("SELECT * FROM t_lock_attedance WHERE imeiNumber='$IMEINumber'");
$jmlPosisi = 0;
while($rPosisi = $dbPosisi->tampilkan()){
$jarak = round(distance($lat,$lng,$rPosisi['loc_lat'],$rPosisi['loc_lng'])*1000);
if($jarak <= $radiusData){
$jmlPosisi = $jmlPosisi+1;
}
}
if($jmlPosisi > 0){
$insert = new database;
$str['loket_name'] = "$nama";
$str['phoneNumber'] = "$IMEINumber";
$str['getLatitude'] = "$lat";
$str['getLongitude'] = "$lng";
$str['alamat'] = "$alamatReal";
//$str['tanggal'] = "$tglGab";
$str['tanggal'] = "$timerserver";
$str['gambar'] = "$fileName";
$str['saran'] = "$keterangan";
$str['km'] = "$odometer";
$str['stat_penjualan'] = "N";
$str['dcrypt'] = "N";
$str['fake_status'] = "$fake_status";
$insert->insert("t_report",$str);
//Insert Absen
$inAbsen = new database;
$strA['phoneNumber'] = "$IMEINumber";
$strA['alamat'] = "$alamatReal";
//$strA['tanggal'] = "$tanggal";
$strA['tanggal'] = "$timerserver";
$strA['jam'] = "$jam";
$strA['gambar'] = "$fileName";
$strA['keterangan'] = "$keterangan";
$strA['km'] = "$odometer";
$strA['posisi'] = "$statusr";
$strA['at_lat'] = "$lat";
$strA['at_lng'] = "$lng";
$strA['fake_status'] = "$fake_status";
$inAbsen->insert("t_attedance",$strA);
if($insert){
$response["value"] = 1;
$response["message"] = "Absensi Berhasil";
echo json_encode($response);
}else{
$response["value"] = 0;
$response["message"] = "Data Gagal di input";
echo json_encode($response);
}
}else{
$response["value"] = 0;
$response["message"] = "Maaf, Anda di luar jangkauan Max. $radiusData";
echo json_encode($response);
}
}else{
$insert = new database;
$str['loket_name'] = "$nama";
$str['phoneNumber'] = "$IMEINumber";
$str['getLatitude'] = "$lat";
$str['getLongitude'] = "$lng";
$str['alamat'] = "$alamatReal";
//$str['tanggal'] = "$tglGab";
$str['tanggal'] = "$timerserver";
$str['gambar'] = "$fileName";
$str['saran'] = "$keterangan";
$str['km'] = "$odometer";
$str['stat_penjualan'] = "N";
$str['dcrypt'] = "N";
$str['fake_status'] = "$fake_status";
$insert->insert("t_report",$str);
//Insert Absen
$inAbsen = new database;
$strA['phoneNumber'] = "$IMEINumber";
$strA['alamat'] = "$alamatReal";
//$strA['tanggal'] = "$tanggal";
$strA['tanggal'] = "$timerserver";
$strA['jam'] = "$jam";
$strA['gambar'] = "$fileName";
$strA['keterangan'] = "$keterangan";
$strA['km'] = "$odometer";
$strA['posisi'] = "$statusr";
$strA['at_lat'] = "$lat";
$strA['at_lng'] = "$lng";
$strA['fake_status'] = "$fake_status";
$inAbsen->insert("t_attedance",$strA);
if($insert){
$response["value"] = 1;
$response["message"] = "Absensi Berhasil";
echo json_encode($response);
}else{
$response["value"] = 0;
$response["message"] = "Data Gagal di input";
echo json_encode($response);
}
}
Я попытался отменить вызов в onFailure, но все же данные отправились в базу данных без Вызывается UploadImagetoServer () (метод onSuccess). Я чувствую, что я все еще вставляю базу данных, даже в модернизации, onFailure
Могу ли я что-нибудь сделать?