为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红糖糍粑 2021-09-03 10:04:11
我在 Java 上有简单的 Web 服务:package tst;import javax.jws.WebMethod;import javax.jws.WebService;import javax.xml.ws.Endpoint;@WebServicepublic 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 字符串变量。如何解决这个问题呢?
查看完整描述

2 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

您应该更改您的 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;

}


查看完整回答
反对 回复 2021-09-03
?
忽然笑

TA贡献1806条经验 获得超5个赞

WebMethod tst被定义为 return intpublic int tst) 并且您返回 1 ( return 1;),这response就是不返回值的原因。

如果您需要返回两者,您应该创建一个包含两者的可序列化对象,例如一个类,这应该是您的返回类型。


查看完整回答
反对 回复 2021-09-03
  • 2 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信