Что у меня есть это AsyncTask, что я использую его для передачи данных в веб-службы, которые работают нормально, а вот мой код веб-сервис:Как я могу проверить возвращаемое значение из веб-службы с помощью AsyncTask
public class WebServiceDetails {
//Namespace of the Webservice - can be found in WSDL
private static String NAMESPACE = "http://tempuri.org/";
//Webservice URL - WSDL File location
//URL = "http://80.90.161.246:70/erP_Reporting/OrderAndroid.asmx";
private static String URL = "http://192.168.1.124/alibabanewwebservice/AliBabaWebService.asmx";//Make sure you changed IP address
//private static String URL = "http://192.168.1.103/webservicejal6ah/OrderAndroid.asmx";//Make sure you changed IP address
//SOAP Action URI again Namespace + Web method name
private static String SOAP_ACTION = "http://tempuri.org/InsertOrderDetails";
public static boolean invokeLoginWS(String DeviceId, String Item_id, String Item_Quantity,String Bounce,String webMethName)
{
boolean loginStatus = false;
// Create request
SoapObject request = new SoapObject(NAMESPACE, webMethName);
// Property which holds input parameters
PropertyInfo deviceid = new PropertyInfo();
PropertyInfo itemid = new PropertyInfo();
PropertyInfo quantity = new PropertyInfo();
PropertyInfo bounce= new PropertyInfo();
deviceid.setName("DeviceId");
deviceid.setValue(DeviceId);
deviceid.setType(String.class);
request.addProperty(deviceid);
itemid.setName("Item_id");
itemid.setValue(Item_id);
itemid.setType(String.class);
request.addProperty(itemid);
quantity.setName("Item_Quantity");
quantity.setValue(Item_Quantity);
quantity.setType(String.class);
request.addProperty(quantity);
bounce.setName("Bounce");
bounce.setValue(Bounce);
bounce.setType(String.class);
request.addProperty(bounce);
// extra.setName("Extra");
// extra.setValue(Extra);
// extra.setType(String.class);
// request.addProperty(extra);
// Create envelope
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(1);
envelope.dotNet = true;
// Set output SOAP object
envelope.setOutputSoapObject(request);
// Create HTTP call object
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try {
// Invoke web service
androidHttpTransport.call(SOAP_ACTION, envelope);
// Get the response
// SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
Object response = (Object) envelope.getResponse();
// Assign it to boolean variable variable
loginStatus = Boolean.parseBoolean(response.toString());
} catch (Exception e) {
//Assign Error Status true in static variable 'errored'
e.printStackTrace();
}
//Return booleam to calling object
return loginStatus;
}
}
а вот мой AsyncTask:
private class AsyncCallWS extends AsyncTask<Void, Void, Void> {
protected void onPostExecute(Void result) {
super.onPostExecute(result);
Log.e("Customer_Name","sereen");
//Make Progress Bar invisible
//AddToCart.cartlist.clear();
try{
//Log.e(" Customer_Id=masterrs.get(m).getCustomerId()", rs.get(m).getCustomerId());
Toast.makeText(CartList.this, "order has been send ", Toast.LENGTH_LONG).show();
}
catch(Exception e){
e.printStackTrace();
}
}
//Make Progress Bar visible
protected void onPreExecute() {
super.onPreExecute();
pd.setTitle("sending");
pd.setMessage("waiting...");
pd.show();
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
loginStatus2 = WebServiceDetails.invokeLoginWS(Device_ID,Item_Id,Quantity,Bounce,"InsertOrderDetails");
Log.e("Device_ID details",Device_ID+"");
// try{
//Log.e(" Customer_Id=masterrs.get(m).getCustomerId()", rs.get(m).getCustomerId());
// }
// catch(Exception e){
// e.printStackTrace();
// }
//
// }
}
return null;
}
}
хорошо, проблема в том, как вы можете видеть мое возвращение AsyncTask нулевое значение, и я хочу это после того, как я отправить значение для возвращения верно для (loginStatus2), но дело в том, когда я пытался чтобы сделать это, это не сработало .. может кто-нибудь мне помочь, что я должен изменить, чтобы получить значение tr ue, когда сообщение о успехе в веб-сервисе и ложь, когда он терпит неудачу?
Вы используете 'недействительная onPostExecute' сделать его возвращение типа' boolean' –
он дал мне ошибку: super.onPostExecute (loginStatus2); – sereen
: Метод onPostExecute (Void) в типе AsyncTask не применим для аргументов (boolean) –
sereen