Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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
C# 为Web服务手动创建代理_C#_Wcf_Web Services_Wsdl - Fatal编程技术网

C# 为Web服务手动创建代理

C# 为Web服务手动创建代理,c#,wcf,web-services,wsdl,C#,Wcf,Web Services,Wsdl,我必须(使用.NET)与Axis1.2上运行的web服务进行通信。我使用两个.NET工具和WSDL创建了C#代理,但遇到了以下问题: 1) WSDL.exe创建的代理缺少方法的输入参数。e、 g.如果有这种方法: AReturnType AMethod(AnInputType); void AMethod(); 创建的代理具有这样的方法: AReturnType AMethod(AnInputType); void AMethod(); 2) 我读过,建议使用SVCUTIL.exe而不是

我必须(使用.NET)与Axis1.2上运行的web服务进行通信。我使用两个.NET工具和WSDL创建了C#代理,但遇到了以下问题:

1) WSDL.exe创建的代理缺少方法的输入参数。e、 g.如果有这种方法:

AReturnType AMethod(AnInputType);
void AMethod();
创建的代理具有这样的方法:

AReturnType AMethod(AnInputType);
void AMethod();
2) 我读过,建议使用SVCUTIL.exe而不是WSDL.exe。因此,我使用svcuti创建了代理,但是遇到了NULL返回的对象。不幸的是,我找不到任何合适的解决办法

因此,我愿意手动进行设置。以下是我所拥有的:

  • SoapUI能够很好地解析WSDL,可以检查SOAP/XML请求/响应
  • Axis WSDL2JAVA生成正确的Java代码,并且运行良好
  • 使用HttpWebRequest发送XML/SOAP请求会生成正确的XML/SOAP响应
  • 我尝试过使用XSD.EXE工具生成XSD和C#对象,并将XML响应(通过上一步获得)序列化到这些对象中

那你有什么建议?有没有办法手动创建代理?或者生成的Java代码可以帮助我吗?

看看这个答案。将允许您直接进行HttpRequest:-


在Java世界中,有一套将WCF客户端与服务连接起来的方法。

以下是我正在处理的项目如何创建和使用手动代理

这是客户端代理:

 [ServiceContract(Name = "YourServiceContract", Namespace = "http://....")]
 public interface YourServiceContract, 
  {
    [OperationContract]
    object GetObject(object searchCriteria);
   }

public class YourClient : ClientBase<YourServiceContract>, YourServiceContract
{
    public YourClient (){ }

    public YourClient (string endpointConfigurationName)
    : base(endpointConfigurationName){ }

    public object GetObject(object searchCriteria)
    {
    return base.Channel.GetObject(searchCriteria);
    }
}
public void GetYourObject(object searchCriteria)
    {
        YourClient proxy = new YourClient();
        proxy.GetObject(searchCriteria);
        proxy.SafeClose();
    }

是的,我已经提到我正在使用HttpWebProxy获得正确的响应(我编辑过,没有明确说明)。那之后呢?序列化为xsd生成的对象?是的。但这并不漂亮。还有一篇关于如何做到这一点的SO文章:-我想这是一个愚蠢的问题,但是,你不能仅仅添加一个对axis服务的WSDL的服务(或web)引用吗?Nick,使用wdsl会导致空对象问题(然而这是一个更广泛的问题,你可以通过谷歌“axis web service.net null”来看看有多少问题)很公平。XDocument、XmlSerializer方法应该可以让您同时摆脱困境。我已经使用它对WCF服务进行了“直接”集成测试,我希望准确地确定我正在发送的XML(以及我希望接收的XML)。