我使用用Java编写的第三方服务器。 WSDL采用rpc / literal样式。
与服务的连接初始化如下:
private static MLPortChannel GetMerlionClient()
{
BasicHttpsBinding binding = new BasicHttpsBinding(BasicHttpsSecurityMode.Transport);
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
binding.MaxReceivedMessageSize = 4096000;
EndpointAddress adress = new EndpointAddress(new Uri(@"https://apitest.merlion.com/rl/mlservice3"));
ChannelFactory<MLPortChannel> factory = new ChannelFactory<MLPortChannel>(binding, adress);
factory.Credentials.UserName.UserName = mlLogin;
factory.Credentials.UserName.Password = mlPassword;
return factory.CreateChannel();
}
它仅适用于一种方法,并返回正确的数据类型和数据。
当我调用其他方法时,它们会返回错误: &#34;无法转换类型&#34; ... MLService3RLTest.CatalogResult []&#34;类型&#34; ... MLService3RLTest.ShipmentDatesResult []&#34;
在此示例中,返回类型必须为ShipmentDatesResult []。
我通过特殊工具测试了该服务。所有请求和响应都是正确的,并返回正确的XML。
导致此错误的原因是什么?也许需要为SOAP服务配置一些东西。也许有一些具有正确价值的魔术选择?
答案 0 :(得分:0)
如果不是引用该服务,而是建立一个使用Web服务技术的Web链接.Net FrameWork 2.0是什么有效
var client = new WpfApplication1.com.merlion.apitest.MLService();
var myCredentials = new System.Net.NetworkCredential(Логин, Пароль);
// Create a webrequest with the specified URL.
var url = "https://apitest.merlion.com/rl/mlservice3";;
client.Credentials = myCredentials.GetCredential(new Uri(url), "Basic");
textBox.AppendText(client.helloWorld("Привет"));
var ответ = client.getCatalog("N1");
var массив = new string[] { "" };
var rz = client.getItems("N10100", массив, "", 0, 2, "");
答案 1 :(得分:0)
添加
client.PreAuthenticate = true;