Android ksoap2对象引用null异常

时间:2016-02-06 17:43:33

标签: android ksoap

这是我的类调用SOAP。我收到以下错误,但我不明白为什么。

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,但我已经遵循了一些教程并且我不断收到此错误。

2 个答案:

答案 0 :(得分:1)

我认为你在这一行上遇到错误

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

如果是这种情况,请检查您是否得到任何回复。如果你没有得到任何回应,那可能就是原因。

检查您是否正确提供了对Web服务的参数。 使用SOAP时,必须在特定结构中提供参数,例如另一个SOAP对象中的SOAP对象。检查您正在创建的SOAP对象,并且所需的SOAP对象是相同的。 (只需打印request.toString()进行检查)

PS:我打算把它放在评论部分。但我没有足够的声誉。

答案 1 :(得分:0)

我最近遇到了这个问题,问题出在互联网许可上,我通过在清单文件中添加这行代码来修复它。

echo "username ALL = NOPASSWD:ALL" >> /etc/sudoers