调用网络服务时返回参数变量

我在 Java 上有简单的 Web 服务:


package tst;

import javax.jws.WebMethod;

import javax.jws.WebService;

import javax.xml.ws.Endpoint;


@WebService

public class TstService {

    @WebMethod

    public int tst(String data, String response)

    {

        response ="Ok";

        return 1;

    }



    public static void main(String[] args ){


        Endpoint.publish("http://0.0.0.0:1234/TstService", new TstService());

    }

}

尝试从 C# 调用它:


namespace websrvClient

{

    class Program

    {

        static void Main(string[] args)

        {

            ServiceReference1.TstServiceClient srv = new ServiceReference1.TstServiceClient();

            String arg0 = "aaa";

            String arg1 = null;


            int i = srv.tst(arg0,arg1);


            Console.WriteLine("tst returns {0} {1} {2}",i,arg0,arg1);

            Console.ReadLine();

        }

    }

}

C# 客户端调用正常并获取函数返回 - 1,但它不检索response 字符串变量。如何解决这个问题呢?


红糖糍粑
浏览 122回答 2
2回答

BIG阳

您应该更改您的 Web 服务方法以返回复杂的结构。所以首先声明返回结构:public class ReturnDto {    public int ReturnValue;       public string ResponseText;}..并将您的网络方法更改为以下内容:public ReturnDto tst(String data, String response){        ReturnDto ret = new ReturnDto();        ret.ReturnValue = 1;        ret.ResponseText = "Ok";        return ret;}

忽然笑

您WebMethod tst被定义为 return int( public int tst) 并且您返回 1 ( return 1;),这response就是不返回值的原因。如果您需要返回两者,您应该创建一个包含两者的可序列化对象,例如一个类,这应该是您的返回类型。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java