.net 不使用WSDL通过ChannelFactory调用SOAP服务
我通过ChannelFactory调用SOAP服务,而不使用WSDL。我将使用此服务的多个版本,并试图避免在我的项目/配置文件中使用多个版本的WSDL 代码如下:.net 不使用WSDL通过ChannelFactory调用SOAP服务,.net,magento,soap,channelfactory,.net,Magento,Soap,Channelfactory,我通过ChannelFactory调用SOAP服务,而不使用WSDL。我将使用此服务的多个版本,并试图避免在我的项目/配置文件中使用多个版本的WSDL 代码如下: [ServiceContract()] public interface IServiceContract { [OperationContract(Name = "login")] string login(string username); } public void UserLogin() { ISer
[ServiceContract()]
public interface IServiceContract
{
[OperationContract(Name = "login")]
string login(string username);
}
public void UserLogin()
{
IServiceContract service = new ChannelFactory<IServiceContract>(
new BasicHttpBinding(),
"http://myurl.com/index.php/api/v2_soap/index/")
.CreateChannel();
var sessionId = service.login("username");
}
错误消息消失了,但该方法现在返回null而不是实际值。再一次,我可以在Fiddler中看到XML,我要查找的值在响应中,但它似乎仍然找不到元素ns1:loginResponse
问题是如何配置ChannelFactory,使其知道具有给定名称空间的所有元素都将以ns1为前缀:?我认为没有一个纯粹的配置选项来实现您想要的功能。。。但是有一个选项-您可以使用
IClientMessageInspector
:这使您可以更改传出和传入的消息,例如,您可以更改/检查任何需要的信息
我假设该服务未在WCF中实现,对吗?你能在Fiddler中看到请求和响应的例子吗?
[ServiceContract(Namespace="urn:Foo")]
public interface IServiceContract
{
[OperationContract(Name = "login")]
string login(string username);
}