2011-10-21 26 views
0

所以我使用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 thise is null ..沒有任何投票? I can see the value of result.tostring()它是真或假,因爲wcf返回它。但是某處出現了一些錯誤,我不知道該怎麼做:/ !!

like this e is null I can see the value of result.tostring()

+1

有一件事我要指出是你應該使用.equals(「true」)而不是「== true」來比較你的字符串 – SnowyTracks

+0

哦,這只是更奇怪.. .equals做了伎倆......它現在完成了方法並返回正確的值。你能否用這段文字作答案,我可以給你答案? :) – Anders

+0

你的eclipse版本是什麼?以及你使用的編譯器級別 –

回答

1

一件事我要指出的是,你應該使用.equals(「真」),而不是「==真」來比較你的字符串

高興它的工作:)

0

我認爲有些事情是在你的設置弄亂了。程序真的不可能像截圖中那樣到達斷點return false,因爲buggedtrue。此外,在您的第二個屏幕截圖中,您尚未位於catch,但位於嘗試內部的return false。這個聲明不會拋出異常,所以如果你最終陷入困境,這很奇怪。我的猜測是部署的代碼和IDE中的代碼不完全相同。如果我查看您粘貼的代碼和您製作屏幕截圖的代碼,則它們也不完全相同。修復這個部署問題,修復評論中提到的SnowyTracks點,然後看看會發生什麼。