1

int値をWebサービスに渡そうとしていて、応答を期待しています。しかし、代わりにWebサービスで値を取得するだけです。つまり、入力値を取り込めないということです。アンドロイドコードは次のとおりです。

    package com.example.fp1_webservicedropdown;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

import org.ksoap2.*;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.*;

public class MainActivity extends Activity {
    TextView result;

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

        result = (TextView) findViewById(R.id.textView2);

        final String NAMESPACE = "http://sample.com/";
        final String METHOD_NAME = "SayHello";
        final String SOAP_ACTION = "http://sample.com/SayHello";
        final String URL = "http://localip/HellowWorld/Service1.asmx";

        SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
        Request.addProperty("SayHello", "32");

        SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        soapEnvelope.dotNet = true;
        soapEnvelope.setOutputSoapObject(Request);

        AndroidHttpTransport aht = new AndroidHttpTransport(URL);
        try {
            aht.call(SOAP_ACTION, soapEnvelope);
            SoapPrimitive resultString = (SoapPrimitive) soapEnvelope
                    .getResponse();
            result.setText("The web service returned " + resultString);
            System.out.println(resultString);
        }

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

Webサービスコードは次のとおりです。

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Services;

namespace HellowWorld
{
    [WebService(Namespace = "http://sample.com/")]
    public class Service1 : System.Web.Services.WebService
    {
        [WebMethod]
        public int SayHello(int a)
        {

            int t = 8 + a;
            return t;
        }
    }
}

アンドロイドを実行すると、Webサービスは8を返しました。Webサービスは40を返しました。どんな助けでも大歓迎です。

4

1 に答える 1

1

WebサービスまたはWebURLは、テキストベースの形式です。データ型を識別しません。テキストを受け入れるだけなので、文字列として渡す必要があり、Webサービスコードからintに変換する必要があります。

これをWebサービスで使用する

public int SayHello(String abc)
        {
            // convert abc  to int
            int t = 8 + converted int;
            return t;
        }
于 2012-12-10T05:33:39.447 に答える