Java 在Android上使用kSoap检索数据,在第一次执行时工作,但在后续执行时返回null

Java 在Android上使用kSoap检索数据,在第一次执行时工作,但在后续执行时返回null,java,android,nullpointerexception,ksoap2,android-ksoap2,Java,Android,Nullpointerexception,Ksoap2,Android Ksoap2,我正在开发一个Android应用程序,它允许用户编写反馈,然后服务器将生成用户的articleID、ticketID和ticketnumber并返回给用户 此应用程序中有两个活动。MainActivity允许用户输入其详细信息,提交按钮将启动流程活动,该活动将向服务器发送详细信息,并显示返回的articleID、ticketID和ticketnumber 问题是,每次启动应用程序时,它只会工作一次。例如,用户打开应用程序并输入其详细信息,按下submit按钮并返回相应的articleID、tic

我正在开发一个Android应用程序,它允许用户编写反馈,然后服务器将生成用户的articleID、ticketID和ticketnumber并返回给用户

此应用程序中有两个活动。MainActivity允许用户输入其详细信息,提交按钮将启动流程活动,该活动将向服务器发送详细信息,并显示返回的articleID、ticketID和ticketnumber

问题是,每次启动应用程序时,它只会工作一次。例如,用户打开应用程序并输入其详细信息,按下submit按钮并返回相应的articleID、ticketID和ticketnumber。然后,他试图通过返回到上一个活动来提交第二个。他再次输入详细信息并按submit。这一次,返回null

这里显示了示例的图像

但是,如果退出应用程序并清除RAM,应用程序将再次工作

我尝试使用此方法重新启动应用程序,但仍然不起作用

下面是流程活动中的kSoap代码

public class Process extends Activity{

private String URL = " /*WORKING URL*/";
private String NAMESPACE = "/*WORKING URL*/";
private String soapUsername = "/*WORKING USERNAME*/";
private String soapPass = "/*WORKING PASSWORD*/";
private String METHOD_NAME = "TicketCreate";
private String SOAP_ACTION = "/*WORKING URL*/";
private Handler handler = new Handler();
private Thread thread;
TextView emailT, subjectT, complaintT, responseT, nameT;
String email, subject, complaint, name;
String articleid , ticketid ,ticketnumber;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.process);
    webservice();

    nameT = (TextView) findViewById(R.id.name);
    emailT = (TextView) findViewById(R.id.email);
    subjectT = (TextView) findViewById(R.id.subject);
    complaintT = (TextView) findViewById(R.id.complaint);
    responseT = (TextView) findViewById(R.id.responsevalue);

    Intent i = getIntent();
    // Receiving the Data
    name = i.getStringExtra("name");
    email = i.getStringExtra("email");
    subject = i.getStringExtra("subject");
    complaint = i.getStringExtra("complaint");

    // Displaying Received data
    nameT.setText(name);
    emailT.setText(email);
    subjectT.setText(subject);
    complaintT.setText(complaint);

    Button fin= (Button)findViewById(R.id.finish);
    fin.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            finish();
        }
    });
}


public void webservice(){
    thread = new Thread(){
        public void run(){
            try 
            {
                SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
                // Set all input params   
                request.addProperty("UserLogin", soapUsername);
                request.addProperty("Password", soapPass);
                Hashtable<String, String> ticket = new Hashtable<String, String>();
                ticket.put("Title", subject);
                ticket.put("CustomerUser", email);
                ticket.put("CustomerID", "soapwebnologin");
                ticket.put("QueueID", "3");
                ticket.put("State", "new");
                ticket.put("PriorityID", "1");
                ticket.put("Lock", "unlock");
                ticket.put("OwnerID", "1");
                request.addProperty("Ticket", ticket);

                Hashtable<String, String> article = new Hashtable<String, String>();
                article.put("Subject", subject);
                article.put("Body", complaint);
                article.put("ContentType", "text/plain; charset=utf8");
                request.addProperty("Article", article);

                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                new MarshalHashtable().register(envelope); 
                envelope.dotNet = true;
                envelope.bodyOut = request; 

                String check = checkSSL(URL);

                if(check == "SSL"){
                    KeepAliveHttpsTransportSE httpT = new  KeepAliveHttpsTransportSE("/*WORKING URL*/", /*WORKING PORT*/, METHOD_NAME, 15000);

                    httpT.debug = true;

                    httpT.call(SOAP_ACTION, envelope);

                     KvmSerializable ks = (KvmSerializable)envelope.bodyIn;
                     articleid = ks.getProperty(0).toString();
                     ticketid = ks.getProperty(1).toString();
                     ticketnumber = ks.getProperty(2).toString();

                    Log.e("dump Request: " ,httpT.requestDump);
                    Log.e("dump response: " ,httpT.responseDump);
                    Log.e("object response : ", ks.toString());
                }
                    else{
                    HttpTransportSE httpT = new HttpTransportSE(URL);

                    httpT.debug = true;

                    httpT.call(SOAP_ACTION, envelope);

                     KvmSerializable ks = (KvmSerializable)envelope.bodyIn;
                     articleid = ks.getProperty(0).toString();
                     ticketid = ks.getProperty(1).toString();
                     ticketnumber = ks.getProperty(2).toString();

                    Log.e("dump Request: " ,httpT.requestDump);
                    Log.e("dump response: " ,httpT.responseDump);
                    Log.e("object response : ", ks.toString());
                    }


            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
            handler.post(createUI);
        }
    };

    thread.start();

}


final Runnable createUI = new Runnable() {
    public void run(){
        responseT.setText("Your ticket id =" + ticketid+ " Article id ="+ articleid+" TICKET NUMBER ="+ ticketnumber);
    }
};

protected String checkSSL(String url){
    String https = url.substring(0, 4);
    if(https == "https"){
        return "SSL";
    }
    else{
        return "noSSL";
    }
}
 }
公共类进程扩展活动{
私有字符串URL=“/*工作URL*/”;
私有字符串名称空间=“/*工作URL*/”;
私有字符串soapUsername=“/*工作用户名*/”;
私有字符串soapPass=“/*工作密码*/”;
私有字符串方法\u NAME=“TicketCreate”;
私有字符串SOAP_ACTION=“/*工作URL*/”;
私有处理程序=新处理程序();
私有线程;
text查看电子邮件、主题、投诉、回复、姓名;
字符串电子邮件、主题、投诉、姓名;
字符串articleid、ticketid、ticketnumber;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.process);
webservice();
nameT=(TextView)findViewById(R.id.name);
emailT=(TextView)findViewById(R.id.email);
subjectT=(TextView)findViewById(R.id.subject);
投诉t=(TextView)findViewById(R.id.complaint);
responseT=(TextView)findViewById(R.id.responsevalue);
Intent i=getIntent();
//接收数据
名称=i.getStringExtra(“名称”);
email=i.getStringExtra(“电子邮件”);
主题=i.getStringExtra(“主题”);
投诉=i.getStringExtra(“投诉”);
//显示接收到的数据
name.setText(名称);
email.setText(电子邮件);
subject.setText(主题);
投诉t.setText(投诉);
按钮fin=(按钮)findViewById(R.id.finish);
fin.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
完成();
}
});
}
公共void webservice(){
线程=新线程(){
公开募捐{
尝试
{
SoapObject请求=新的SoapObject(名称空间、方法名称);
//设置所有输入参数
addProperty(“UserLogin”,soapUsername);
addProperty(“密码”,soapPass);
哈希表票证=新哈希表();
票。票(“标题”,主题);
票证。put(“客户”,电子邮件);
ticket.put(“CustomerID”、“soapwebnologin”);
票证。put(“排队ID”,“3”);
票。票(“州”、“新”);
票。票(PriorityID,1);
票。放(“锁”、“解锁”);
票据。放置(“所有者ID”、“1”);
请求。添加属性(“票证”,票证);
Hashtable article=新的Hashtable();
第条.付诸表决(“主体”,主体);
第条.提出(“主体”,投诉);
article.put(“ContentType”、“text/plain;charset=utf8”);
请求。添加属性(“第条”,第条);
SoapSerializationEnvelope=新的SoapSerializationEnvelope(SoapEnvelope.VER11);
新的MarshalHashtable().寄存器(信封);
envelope.dotNet=true;
envelope.bodyOut=请求;
字符串检查=检查SSL(URL);
如果(检查==“SSL”){
KeepAliveHttpStranSports httpT=新的KeepAliveHttpStranSports(“/*工作URL*/”,/*工作端口*/,方法名称,15000);
httpT.debug=true;
调用(SOAP_操作、信封);
KvmSerializable ks=(KVMSerizable)envelope.bodyIn;
articleid=ks.getProperty(0.toString();
ticketid=ks.getProperty(1.toString();
ticketnumber=ks.getProperty(2.toString();
Log.e(“转储请求:”,httpT.requestDump);
Log.e(“转储响应:”,httpT.responseDump);
Log.e(“对象响应:,ks.toString());
}
否则{
HttpTransportSE httpT=新的HttpTransportSE(URL);
httpT.debug=true;
调用(SOAP_操作、信封);
KvmSerializable ks=(KVMSerizable)envelope.bodyIn;
articleid=ks.getProperty(0.toString();
ticketid=ks.getProperty(1.toString();
ticketnumber=ks.getProperty(2.toString();
Log.e(“转储请求:”,httpT.requestDump);
Log.e(“转储响应:”,httpT.responseDump);
Log.e(“对象响应:,ks.toString());
}
}
捕获(例外e)
{
e、 printStackTrace();
}
handler.post(createUI);
}
};
thread.start();
}
最终可运行createUI=新可运行(){
公开募捐{
responseT.setText(“您的票证id=“+ticketid+”文章id=”+
System.setProperty("http.keepAlive", "false");