androidでPOST送信が失敗した場合にエラーを出したい
アンドロイドでsqliteのデータをPOST送信し、送信したデータを送信済み用のデータに格納しているのですが、受け取り側のPHPをいじっていてエラーが出ている場合でも、通信されたとみなされ、データが送信済み用のデータに格納されてしまいます。(その後にデータは消される)
どのようにすればPHP側でエラーが出た場合にデータ格納の処理を中止できますか。
教えてください。
public class UploadAsyncTask
extends AsyncTask<String, Integer, Integer> {
private Activity MainActivity;
public UploadAsyncTask(Activity activity) {
MainActivity = activity;
}
@Override
protected Integer doInBackground(String... params) {
try {
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(params[0]);
List<NameValuePair> params2 = new ArrayList<NameValuePair>();
helper = new DBOpenHelper(MainActivity.this);// DB作成
// データの取得
db = helper.getReadableDatabase();
db4 = helper.getWritableDatabase();
// 列名の定義
String[] columns = {"productid", "name", "val1", "val2", "val3", "val4", "val5"}
// データの取得
Cursor cursor = db.query(DB_TABLE, null, null, null, null, null, "productid");
int i = 0;
String nippodata;
db4.beginTransaction();
while (cursor.moveToNext()) {
ContentValues val = new ContentValues();
val.put("productid",cursor.getString(0));
val.put("name",cursor.getString(1));
val.put("val1",cursor.getString(2));
val.put("val2",cursor.getString(3));
val.put("val3",cursor.getString(4));
val.put("val4",cursor.getString(5));
val.put("val5", cursor.getString(6));
// データ更新
db4.insert(DB_TABLE4,null, val);
data=cursor.getString(0)+"\t"+cursor.getString(1)+"\t"+cursor.getString(2)+"\t"+cursor.getString(3)+"\t"+cursor.getString(4)+"\t"+cursor.getString(5)+"\t"+cursor.getString(6);
params2.add(new BasicNameValuePair("product["+i+"]",data));
i++;
}
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
String Key=sp.getString("SaveString", null);
//事情所コード
params2.add(new BasicNameValuePair("key",Key));
db4.setTransactionSuccessful();
// トランザクション制御終了
db4.endTransaction();
try {
httpPost.setEntity(new UrlEncodedFormEntity(params2, "UTF-8"));
HttpResponse httpResponse = httpClient.execute(httpPost);
// ステータスコードを取得
int statusCode = httpResponse.getStatusLine().getStatusCode();
Log.e("statusCode", String.valueOf(statusCode));
// レスポンスを取得
HttpEntity entity = httpResponse.getEntity();
String response = EntityUtils.toString(entity);
entity.consumeContent();
// クライアントを終了させる
httpClient.getConnectionManager().shutdown();
db.beginTransaction();
db.execSQL("DELETE FROM " + DB_TABLE);
db.setTransactionSuccessful();
// トランザクション制御終了
db.endTransaction();
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return 0;
}
@Override
protected void onPostExecute(Integer result) {
if (result==null) {
Toast.makeText(NP_Submit.this, "エラー", Toast.LENGTH_SHORT).show();
finish();
}else{
Toast.makeText(NP_Submit.this, "ok", Toast.LENGTH_SHORT).show();
}
progressDialog.dismiss();
}