Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 不使用WSDL通过ChannelFactory调用SOAP服务_.net_Magento_Soap_Channelfactory - Fatal编程技术网

.net 不使用WSDL通过ChannelFactory调用SOAP服务

.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

我通过ChannelFactory调用SOAP服务,而不使用WSDL。我将使用此服务的多个版本,并试图避免在我的项目/配置文件中使用多个版本的WSDL

代码如下:

[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);
}