私はAsyncTaskを使用してWindows WCFサービスへの呼び出しを行っています。これまでのところは素晴らしいものでした。文字列を返してアプリケーション内に表示するメソッドを呼び出すことができます。私は若干の誤差が出るブール値を返すメソッドをしようとしたとき。..奇妙なAndroid AsyncTaskのバグ理解できない
コードしかし
RegisterSeatTask task = new RegisterSeatTask();
task.execute(this);
protected class RegisterSeatTask extends AsyncTask<Context, Integer, String> {
protected String doInBackground(Context... arg0) {
try {
......
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
if (!LicenseHandler.RegisterSeat(licenseKey, ident,android.os.Build.DEVICE,tm.getDeviceId())) {
return "License is invalid or does not have any empty seats!";
}
......
}
protected void onPostExecute(String result) {
Toast.makeText(getBaseContext(), result, Toast.LENGTH_LONG).show();
}
}
public static boolean RegisterSeat(String License, String Identifier,
String Device, String DeviceID) {
try {
METHOD_NAME = "RegisterSeat";
SOAP_ACTION = "http://tempuri.org/IService/RegisterSeat";
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("License", License);
request.addProperty("MyIdentifier", Identifier);
request.addProperty("Device", Device);
request.addProperty("DeviceID", DeviceID);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapPrimitive result = (SoapPrimitive) envelope.getResponse();
if (result.toString().toLowerCase() == "true") {
return true;
}
// to get the data
return false;
} catch (Exception e) {
return false;
}
}
は、しかし、毎回私は、コードが停止し、(キャッチ内側の最後の行に終わる)(メソッドのRegisterSeatを実行します)like thisとe is null ..キャストはありませんか? I can see the value of result.tostring() wcfが返すときにtrueまたはfalseのいずれかになります。しかし、どこかにバグがあり、私は何を作るべきか分からない:/ !!
一つのことを働いた
が喜んで、あなたの文字列を比較することではなく、「真==」よりも.equals(「真」)を使用しなければならないということですあなたの文字列を比較するには、 "== true"ではなく.equals( "true")を使用しなければならないということです。 – SnowyTracks
oh thats just wierd .. .equalsはトリックを行いました...これでメソッドが完成し、適切な値が返されます。この文章で答えを出すことができますか?私はあなたに答えを与えることができますか? :) – Anders
あなたの日食版は何ですか?どのコンパイラレベルを使用していますか –