这是我的类调用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,但我已经遵循了一些教程并且我不断收到此错误。
答案 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