Java上的SOAP服务在Response中返回不正确的类型

时间:2015-12-22 13:16:10

标签: c# web-services soap

我使用用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服务配置一些东西。也许有一些具有正确价值的魔术选择?

2 个答案:

答案 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;