我正在使用 Web 服务在 C# 中实现一些代码,但我唯一的参考是他们用来加载测试的 Java 代码。
Java 通过调用 this 获取对象调用
lotService=(LotService) ic.lookup("mes-webservices/lotService/remote");
其中 IC 是 InitialContext 对象。
我需要在 C# 上做同样的调用,但我不知道怎么做。有没有像这个java方法一样的简单方法在C#中做到这一点?
我正在使用 Web 服务在 C# 中实现一些代码,但我唯一的参考是他们用来加载测试的 Java 代码。
Java 通过调用 this 获取对象调用
lotService=(LotService) ic.lookup("mes-webservices/lotService/remote");
其中 IC 是 InitialContext 对象。
我需要在 C# 上做同样的调用,但我不知道怎么做。有没有像这个java方法一样的简单方法在C#中做到这一点?
您可以通过将服务引用添加到 Web 服务来在 C# 中执行类似的操作。我假设您的 web 服务和消费客户端都在 .NET 中。
伪代码将是
LocationWebService objService = new LocationWebService(); // this is proxy class of web service created when you add web reference
string result = objService.GetLocationName(4); //call web method
以下是步骤:
这就对了。
首先右键单击您的项目并选择“添加服务引用”。
拥有它后,您需要创建服务客户端对象。无论您在上面命名服务引用,您的项目中都会有一个可用的新类型(我认为,命名的服务引用名称末尾附加了“Client”。示例:如果服务是 FooService,您将拥有一个称为 FooServiceClient 的客户端类型可用。)
要实例化,您需要一个绑定。您可以通过编程方式创建它:
var binding = new BasicHttpBinding()
{
CloseTimeout = new TimeSpan(0, 1, 0),
OpenTimeout = new TimeSpan(0, 1, 0),
ReceiveTimeout = new TimeSpan(0, 10, 0),
SendTimeout = new TimeSpan(0, 1, 0),
AllowCookies = false,
BypassProxyOnLocal = false,
HostNameComparisonMode = HostNameComparisonMode.StrongWildcard,
MaxBufferSize = 65536,
MaxBufferPoolSize = 524288,
MaxReceivedMessageSize = 65536,
MessageEncoding = WSMessageEncoding.Text,
TextEncoding = Encoding.UTF8,
TransferMode = TransferMode.Buffered,
UseDefaultWebProxy = true
};
binding.ReaderQuotas.MaxDepth = 32;
binding.ReaderQuotas.MaxStringContentLength = 8192;
if (isHttps)
binding.Security = new BasicHttpSecurity() { Mode = BasicHttpSecurityMode.Transport };
然后你需要一个端点。像这样创建:
var endpoint = new EndpointAddress(serviceUri);
然后只需实例化服务客户端:
var serviceClient = new FooServiceClient(binding, endpoint);
您可以从服务客户端实例调用您的服务方法。