android中onPostExcecute方法处的空指针异常

android中onPostExcecute方法处的空指针异常,android,web-services,Android,Web Services,在我的项目中,我使用AsyncTask调用web服务。当我试图通过传递字符串值来调用web服务时,出现了空指针异常。如何克服此异常。下面是我的代码 ValidateActivationCode.java public class ValidateActivationCode extends AsyncTask<String, Void, Void> { String SOAP_ACTION1 = "http://tempuri.org/ValidateActivation

在我的项目中,我使用AsyncTask调用web服务。当我试图通过传递字符串值来调用web服务时,出现了空指针异常。如何克服此异常。下面是我的代码

ValidateActivationCode.java

public class ValidateActivationCode extends AsyncTask<String, Void, Void>  {

    String SOAP_ACTION1 = "http://tempuri.org/ValidateActivationCode";
    String NAMESPACE = "http://tempuri.org/";
    String METHOD_NAME1 = "ValidateActivationCode";


    String URL="http://myasp.net/webservice2.asmx";

    private String TAG = "VALIDATING CODE";

    String responseString;
    String responseStatus = "SUCCESS";
    Context context;
    AsyncResponseListener responseListener;


    public interface AsyncResponseListener {
        public void onresponse(String status, String jsonData);
    }

    public ValidateActivationCode(Context c) {
        responseListener = (AsyncResponseListener) c;
        context = c;
    }


    @Override
    protected Void doInBackground(String... params) {
        Log.i(TAG, "doInBackground");

        RegToServer(params[0]);
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        Log.i(TAG, "onPostExecute");
        responseListener.onresponse("status",responseString);



    }

    @Override
    protected void onPreExecute() {
        Log.i(TAG, "onPreExecute");

    }

    @Override
    protected void onProgressUpdate(Void... values) {
        Log.i(TAG, "onProgressUpdate");
    }

        private void RegToServer(String Code) {



        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME1);

        request.addProperty("Code", Code);

        Log.i("TAG","Inside regtoserver before webservice call "+Code);

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        envelope.setOutputSoapObject(request);
        envelope.dotNet = true;



        try {
            HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
            androidHttpTransport.call(SOAP_ACTION1, envelope);

            Object response = (Object) envelope.getResponse();
            responseString=response.toString();


            Log.i(TAG,responseString );

            Log.i(TAG, "Websevice called");

        } catch (Exception e) {
            e.printStackTrace();

            Log.i(TAG, "FAILED");


        }

    }

    }
public类ValidateActivationCode扩展了异步任务{
字符串SOAP_ACTION1=”http://tempuri.org/ValidateActivationCode";
字符串命名空间=”http://tempuri.org/";
字符串方法\u NAME1=“ValidateActivationCode”;
字符串URL=”http://myasp.net/webservice2.asmx";
私有字符串TAG=“验证代码”;
弦乐;
字符串responseStatus=“成功”;
语境;
AsyncResponseListener-responseListener;
公共接口异步响应侦听器{
公共void onresponse(字符串状态,字符串jsonData);
}
公共ValidateActivationCode(上下文c){
responseListener=(AsyncResponseListener)c;
上下文=c;
}
@凌驾
受保护的Void doInBackground(字符串…参数){
Log.i(标签“doInBackground”);
RegToServer(参数[0]);
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
Log.i(标记“onPostExecute”);
onresponse(“状态”,responseString);
}
@凌驾
受保护的void onPreExecute(){
Log.i(标记“onPreExecute”);
}
@凌驾
受保护的void onProgressUpdate(void…值){
Log.i(标记“onProgressUpdate”);
}
私有void RegToServer(字符串代码){
SoapObject请求=新的SoapObject(名称空间,方法\名称1);
请求。添加属性(“代码”,代码);
Log.i(“TAG”,“webservice调用之前的regtoserver内部”+代码);
SoapSerializationEnvelope=新的SoapSerializationEnvelope(
第11版);
envelope.setOutputSoapObject(请求);
envelope.dotNet=true;
试一试{
HttpTransportSE androidHttpTransport=新的HttpTransportSE(URL);
调用(SOAP_ACTION1,信封);
对象响应=(对象)信封.getResponse();
responseString=response.toString();
Log.i(标签、响应项);
Log.i(标记为“webevice called”);
}捕获(例外e){
e、 printStackTrace();
Log.i(标记“失败”);
}
}
}

logcat

实际上,请发布您的stacktrace

尽管如此,通过快速查看您的代码,空指针的一个可能区域可以是: 对象响应=(对象)信封.getResponse(); responseString=response.toString()

请检查响应是否为空? i、 e.使用以下方法:

Object response = (Object) envelope.getResponse();
    if(response!=null)
        responseString=response.toString();

难以置信:2015年,人们仍然抱怨
NullPointerException
没有发布StackTrace…在这个空指针错误之后,我可以通过logcat获取响应字符串..但是我找不到为什么会发生这个错误。所以你得到了响应和错误?如果您现在知道了可能的错误,为什么要概括这个捕获(异常e)?