Ich versuche, ein JSON
Objekt an einen Web-Service über Asynctask
zu übergeben. Ich rufe eine collectStatistics
Methode in der MainActivity
. Diese Methode sammelt einige Statistiken des mobilen Geräts und kombiniert sie in einem JSON
Objekt. JSON
Objekt wird dann an Asynctask
übergeben.Übergabe von JSON-Objekt an einen Web-Service über AsyncTask
JSONObject jsonProperties = new JSONObject();
try {
jsonProperties.put("_device" , _device);
jsonProperties.put("_model", _model);
jsonProperties.put("_product", _product);
} catch (JSONException e) {
e.printStackTrace();
}
if (jsonProperties.length() > 0)
{
//call to async class
//String.valueOf(jsonProperties)
//new SendJsonProperties().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, jsonProperties); //instead of execute
Toast.makeText(context,jsonProperties.toString(),Toast.LENGTH_LONG).show();
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
new SendJsonProperties().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, jsonProperties);
Log.i("msg","calling asynctask");
} else {
new SendJsonProperties().execute(jsonProperties);
Log.i("msg","NOT calling asynctask");
}
}
Der AsyncTask erhält JSON Parameter
class SendJsonProperties extends AsyncTask <JSONObject,String,String>
ich einen Web-Service-Anrufer Methode in doInBackground rufen
protected String doInBackground(JSONObject... params)
{
//(...) elippsis make the input array
Log.i("msg", "do in bkgnd");
WebServicesCaller webServicesCaller = new WebServicesCaller();
result = webServicesCaller.storeStatistics(params[0]);
return null;
}
Aber ich bekomme diese Fehlermeldung
java.lang.RuntimeException: Cannot serialize: {"_product":"ms013gxx","_model":"SM-G7102","_device":"ms013g"}
Ich kann das Problem in der Serialisierung nicht herausfinden. Jede Hilfe wird sehr geschätzt. Danke im Voraus.
Sorry, aber ich weiß nicht, wovon du redest, könntest du bitte mehr erklären? Danke für Ihre Hilfe. –
Sie haben diesen Fehler erhalten, weil Ihre Objekte (_product) nicht serialisiert sind. Dafür müssen Sie das in serializable umwandeln, indem Sie den obigen Link verwenden, erhalten Sie serialisierte Objekte –