我在 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;
}
忽然笑
TA贡献1806条经验 获得超5个赞
您WebMethod
tst
被定义为 return int
( public int tst
) 并且您返回 1 ( return 1;
),这response
就是不返回值的原因。
如果您需要返回两者,您应该创建一个包含两者的可序列化对象,例如一个类,这应该是您的返回类型。
添加回答
举报
0/150
提交
取消