2016-02-06 3 views
2

Вот мой класс, который вызывает SOAP. Я получаю следующую ошибку, и я не понимаю, почему.Android ksoap2 ссылка на объект null исключение

ava.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.ksoap2.serialization.SoapPrimitive.toString()' on a null object reference

public class WebServicesController { 

private static final String NAMESPACE = "http://mywebsite.com:9000/"; 
private static final String ASMXURL = "Services.asmx?"; 

private String TAG = "PGGURU"; 
static SoapPrimitive resultString; 

public static void SoapActionExecuteStoredProcedure(String METHOD_NAME,List<String> ArgumentPipeValue) throws XmlPullParserException, IOException { 

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
    //add arguments in to 
    for (String arg : ArgumentPipeValue) { 
     String[] splitArgs = arg.split("|"); 
     request.addProperty(splitArgs[0], splitArgs[1]); 
    } 
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 

    envelope.setOutputSoapObject (request); 
    envelope.dotNet = true; 
    HttpTransportSE ht = new HttpTransportSE(NAMESPACE+ASMXURL); 


    ht.call (METHOD_NAME, envelope); 
    SoapObject response = (SoapObject)envelope.getResponse(); 
    String result = response.getProperty(0).toString(); 

} 
} 

А вот как я это называю.

bt.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Log.i(TAG, "doInBackground"); 
      List<String> myargs = new ArrayList<String>(); 
      myargs.add("_caseId|apples"); 
      try { 
       WebServicesController.SoapActionExecuteStoredProcedure("DJProvider_Delete", myargs); 
      } catch (Exception e) { 
      } 
     } 
    }); 

Любые указатели были бы фантастическими. Возможно, я не совсем понимаю, как использовать KSoap, но я следил за несколькими учебниками, и я продолжаю получать эту ошибку.

ответ

1

Я думаю, вы получаете сообщение об ошибке на этой линии

**String result = response.getProperty(0).toString();**

Если это так, пожалуйста, проверьте, что вы получаете никакого ответа вообще. Если вы вообще не получаете ответа, это может быть причиной.

проверьте правильность предоставления аргументов веб-сервису. При использовании SOAP вам необходимо предоставить аргументы в определенной структуре, например SOAP-объект внутри другого объекта SOAP. Проверьте созданный объект SOAP и тот, который вам нужен. (Просто распечатайте request.toString() для проверки)

PS: Я хотел поставить это в разделе комментариев. Но у меня нет достаточной репутации.

0

Недавно я столкнулся с этой проблемой, проблема заключалась в разрешении доступа к интернету, и я исправил ее, добавив эту строку кода в файл манифеста.

<uses-permission android:name="android.permission.INTERNET" /> 

 Смежные вопросы

  • Нет связанных вопросов^_^