Android的web服务的SOAP应用的AsyncTask力停止错误 [英] Android soap webservice Asynctask app force stop error

查看:316
本文介绍了Android的web服务的SOAP应用的AsyncTask力停止错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经在Android中使用肥皂写了一个程序的Web服务。但IAM不知道的AsyncTask的。有人可以纠正的程序流程。我需要发送一个整数值,并得到转换值直通web服务

 包com.example.webservice;进口org.ksoap2.SoapEnvelope;
进口org.ksoap2.serialization.PropertyInfo;
进口org.ksoap2.serialization.SoapObject;
进口org.ksoap2.serialization.SoapPrimitive;
进口org.ksoap2.serialization.SoapSerializationEnvelope;
进口org.ksoap2.transport.HttpTransportSE;进口com.example.webservice.R.string;进口android.os.AsyncTask;
进口android.os.Bundle;
进口android.app.Activity;
进口android.util.Log;
进口android.view.View;
进口android.view.View.OnClickListener;
进口android.widget.Button;
进口android.widget.EditText;
进口android.widget.TextView;公共类WebService的延伸活动{
       私人最终字符串NAMESPACE =htt​​p://tempuri.org/;
       私人最终字符串URL =htt​​p://www.w3schools.com/webservices/tempconvert.asmx?wsdl;
       私人最终字符串SOAP_ACTION =htt​​p://tempuri.org/CelsiusToFahrenheit;
       私人最终字符串METHOD_NAME =CelsiusToFahrenheit;
    字符串摄氏=;
       按钮B;
    TextView的电视;
    的EditText等;
    字符串资源;
    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_web_service);
        等=(EditText上)findViewById(R.id.editText1);
        电视=(的TextView)findViewById(R.id.Result);
        B =(按钮)findViewById(R.id.button1);
        b.setOnClickListener(新OnClickListener(){            @覆盖
            公共无效的onClick(视图v){
                // TODO自动生成方法存根
            //字符串结果= getFarenheit(et.getText()的toString());
            //tv.setText(result+\"°F);
            新服务()执行();
            }
        });
    }
    私人一流的服务扩展的AsyncTask<太虚,太虚,字符串> {        @覆盖
        保护字符串doInBackground(虚空......为arg0){            SoapObject要求=新SoapObject空间(namespace,METHOD_NAME);
            的PropertyInfo celsuiusPI =新的PropertyInfo();
            celsuiusPI.setName(摄氏);
            celsuiusPI.setValue(摄氏);
            celsuiusPI.setType(为String.class);
            request.addProperty(celsuiusPI);
            SoapSerializationEnvelope信封=新SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.dotNet = TRUE;
            envelope.setOutputSoapObject(请求);
            HttpTransportSE androidHttpTransport =新HttpTransportSE(URL);
            尝试{
                androidHttpTransport.call(SOAP_ACTION,信封);
                SoapPrimitive响应=(SoapPrimitive)envelope.getResponse();
                Log.i(WebService的输出,response.toString());
                RES = response.toString();            }
            赶上(例外五){
                e.printStackTrace();
            }            返回水库;        }
         保护无效onPostExecute(字符串高){
             字符串结果= H;
                tv.setText(结果+°F);    }
}
}

跟踪

  18 11-15:38:08.045:W /微量(823):从nativeGetEnabledTags意外的值:0
11-15 18:38:08.065:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:08.065:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:08.515:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:08.515:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:08.546:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:08.546:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:09.130:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:09.130:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:09.167:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:09.167:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:09.685:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:09.685:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:09.736:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:09.736:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:10.235:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:10.235:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:10.255:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:10.255:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:10.801:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:10.801:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:10.825:W /微量(823):意外从nativeGetEnabledTags值:0
11-15 18:38:10.825:W /微量(823):意外从nativeGetEnabledTags值:0


解决方案

试试这个

  {尝试
        SoapObject要求=新SoapObject空间(namespace,METHOD_NAME);
        SoapSerializationEnvelope信封=新SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        request.addProperty(XMLMarks,pXmlString);
        envelope.dotNet = TRUE;
        envelope.implicitTypes = TRUE;
        envelope.enc = SoapSerializationEnvelope.ENC2003;
        envelope.xsd = SoapEnvelope.XSD;
        envelope.xsi = SoapEnvelope.XSI;
        envelope.setOutputSoapObject(请求);
        envelope.setAddAdornments(假);        HttpTransportSE HT =新HttpTransportSE(URL);
        ht.setXmlVersionTag(&下; XML版本= \\1.0 \\编码= \\UTF-8 \\>);
        ht.debug = TRUE;
        ht.call(SOAP_ACTION,信封);        最终SoapPrimitive响应=(SoapPrimitive)envelope.getResponse();
        //最后SoapObject响应=(SoapObject)envelope.getResponse();
        Toast.makeText(这一点,response.toString(),Toast.LENGTH_LONG).show();
        字符串str = response.toString();
        strcheck =海峡;
    }

i have wrote a program in android for webservice using soap. but iam not aware of asynctask. Can some one Correct the program flow. I need to send a integer value and get converted value thru webservice

   package com.example.webservice;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import com.example.webservice.R.string;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class WebService extends Activity {
       private final String NAMESPACE = "http://tempuri.org/";
       private final String URL = "http://www.w3schools.com/webservices/tempconvert.asmx?wsdl";
       private final String SOAP_ACTION = "http://tempuri.org/CelsiusToFahrenheit";
       private final String METHOD_NAME = "CelsiusToFahrenheit";
    String celsius="";
       Button b;
    TextView tv;
    EditText et;
    String res;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web_service);
        et=(EditText)findViewById(R.id.editText1);
        tv=(TextView)findViewById(R.id.Result);
        b=(Button)findViewById(R.id.button1);
        b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
            //String result=getFarenheit(et.getText().toString());
            //tv.setText(result+"°F");
            new service().execute();
            }
        });
    }
    private class service extends AsyncTask<Void, Void, String>{

        @Override
        protected String doInBackground(Void... arg0) {

            SoapObject request= new SoapObject(NAMESPACE, METHOD_NAME);
            PropertyInfo celsuiusPI= new PropertyInfo();
            celsuiusPI.setName("Celsius");
            celsuiusPI.setValue(celsius);
            celsuiusPI.setType(string.class);
            request.addProperty(celsuiusPI);
            SoapSerializationEnvelope envelope=new SoapSerializationEnvelope (SoapEnvelope.VER11);
            envelope.dotNet=true;
            envelope.setOutputSoapObject(request);
            HttpTransportSE androidHttpTransport=new HttpTransportSE(URL);
            try{
                androidHttpTransport.call(SOAP_ACTION, envelope);
                SoapPrimitive response=(SoapPrimitive)envelope.getResponse();
                Log.i("WebService output", response.toString());
                res= response.toString();

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

            return res;

        }
         protected void onPostExecute(String h){
             String result=h;
                tv.setText(result+"°F");

    }


}
}

Trace

11-15 18:38:08.045: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:08.065: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:08.065: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:08.515: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:08.515: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:08.546: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:08.546: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:09.130: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:09.130: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:09.167: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:09.167: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:09.685: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:09.685: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:09.736: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:09.736: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:10.235: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:10.235: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:10.255: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:10.255: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:10.801: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:10.801: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:10.825: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0
11-15 18:38:10.825: W/Trace(823): Unexpected value from nativeGetEnabledTags: 0

解决方案

Try this

try {
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        request.addProperty("XMLMarks", pXmlString);
        envelope.dotNet = true;
        envelope.implicitTypes = true;
        envelope.enc = SoapSerializationEnvelope.ENC2003;
        envelope.xsd = SoapEnvelope.XSD;
        envelope.xsi = SoapEnvelope.XSI;
        envelope.setOutputSoapObject(request);
        envelope.setAddAdornments(false);

        HttpTransportSE ht = new HttpTransportSE(URL);
        ht.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
        ht.debug = true;
        ht.call(SOAP_ACTION, envelope);



        final SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
        // final SoapObject response = (SoapObject)envelope.getResponse();
        Toast.makeText(this,response.toString(),Toast.LENGTH_LONG).show();
        String str = response.toString();
        strcheck = str;
    }

这篇关于Android的web服务的SOAP应用的AsyncTask力停止错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆