2013-03-12 3 views
0

У меня есть ASP.NET WebService, который будет генерировать исключение, если входное условие неверно.Android ksoap2 handle ASP.NET exception

Если он вызван другим клиентом приложения C#/ASP.NET, они могут правильно интерпретировать исключение.

Но если он вызывается ksoap2, я получаю HTTP-статус 500 вместо этого.

Могу ли я узнать, как лучше всего обработать это исключение и, самое главное, получить сообщение об ошибке в этом исключении, чтобы я мог отображать его.

Заранее спасибо.

---- Добавление кода ниже:

ASP.NET Web Services

[WebMethod] 
public void Test() 
{ 
    throw new Exception("This is a test message"); 
} 

Android ksoap2 клиент

// There are some details been obmitted. Just assume the code below works ok? 

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
envelope.dotNet = true; 
envelope.setOutputSoapObject(request); 
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL, 60000); 
try 
{ 
    // The Web Service in ASPNET is invoked successfully. And an Exception is thrown. 
    androidHttpTransport.call(SOAP_ACTION, envelope); 

    SoapObject obj; 
    obj = (SoapObject)envelope.getResponse(); 
} 
catch (Exception e) 
{ 
    // Manage to reach here. But How can I retrieve the Fault Message "This is a test message"? 
    e.printStackTrace(); 
} 
+0

В основном это «код ответа». Вы можете проверить, является ли это «404 500 403» и т. Д., И на основании этого вы можете показать тост или что-то еще. – Prateek

+0

Да, я получаю только ответный код 505. Но дело в том, что ошибка SOAP приходит с сообщением. Клиент ASPNET сможет получить это конкретное сообщение. Но клиент ksoap2 этого не делает. –

ответ

0

Если вы использовали версию 3.0.0 для ksoap2-android, и вы получили ошибку SOAP в ответе с соответствующим кодом ошибки HTTP 500, вы бы не получили объект ошибки SOAP.

Это было исправлено в версии 3.0.1: https://code.google.com/p/ksoap2-android/wiki/ProjectNews.