ksoap2-android connecitong问题

时间:2013-03-10 18:50:39

标签: android-ksoap2

所以我在尝试将6个变量发送到Web服务(http://hydra.chorleywood.org/hydradevices/devicesmanagement.asmx

时遇到问题

我在运行4.2 API 17的android中使用kso​​ap2-android

每次按下与之关联的按钮时,我的程序都会崩溃。我已经浏览了很多教程并且已经按照他们的方式完成了但是它对我来说无效,无论我是在eclipse中运行还是导出并在我的手机上运行它。

这是代码的相关部分

private static final String NAMESPACE = "http://hydra.chorleywood.org";
private static final String URL="http://hydra.chorleywood.org/hydradevices/devicesmanagement.asmx"; 
private static final String METHOD1_SOAP_ACTION_URL = "http://hydra.chorleywood.org/addNewDevice";
private static final String METHOD_NAME1 = "addNewDevice";

final Button status_button = (Button) findViewById(R.id.device_status);
status_button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // Perform action on click

        // setting my variables
        String EUI64 = "EHF7980HY3G793HG393GF737GH80G7";
        String HashCode = "MB2GPD";
        int DeviceTypeID = 528391;
        String subType = "Weighing Scales";
        String Manufacturer = "Samsung";
        String SerialNumber = "8476403967";

        // setting connectionas
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME1);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        envelope.dotNet = true;

        // setting informaiton to be sent
        request.addProperty("EUI64", EUI64);
        request.addProperty("HashCode", HashCode);
        request.addProperty("DeviceTypeID", DeviceTypeID);
        request.addProperty("subType", subType);
        request.addProperty("Manufacturer", Manufacturer);
        request.addProperty("SerialNumber", SerialNumber);

        // setting request to be sent out
        envelope.setOutputSoapObject(request);

            try
            {
            androidHttpTransport.call(METHOD1_SOAP_ACTION_URL, envelope);
            //java.lang.String receivedString = (String)envelope.getResponse();
            //java.lang.Boolean receivedBoolean = (Boolean)envelope.getResponse();
            Object result = envelope.getResponse();

            /**if(receivedBoolean = true) {
                Context context = getApplicationContext();
                CharSequence text = "testing toast";
                int duration = Toast.LENGTH_SHORT;

                Toast toast = Toast.makeText(context, text, duration);
                toast.show();
            }**/

            }

            catch(Exception e)
            {
            }
    }   

我已在清单中设置了权限 我不确定究竟是什么问题,有人知道吗?

我尝试过不同的API,但仍然没有用。 我真的很感激这个主题的任何帮助,到目前为止我已经花了一个星期的时间,我只是在圈子里跑。

我确实复制粘贴其他人的网络服务(我相信是一个活跃的服务器)并尝试运行他们的确切代码,这似乎也不起作用。也许这会帮助你找出我遇到的问题。

非常感谢,

查理

2 个答案:

答案 0 :(得分:0)

你需要使用Thread高于3.0的Android版本。 试试this.

答案 1 :(得分:0)

您正尝试访问主题中的网络。 Android会在这些情况下抛出NetworkOnMainThreadException。

请检查这个问题。 android.os.NetworkOnMainThreadException

您需要在单独的线程中访问网络。 (Processes and Threads