标签: wsdl

WSDL - 没有输入 - 最佳实践

我正在开发一个SOAP Web服务.其中一个函数是isAlive().它没有输入参数.WSDL的最佳实践是什么?我试过了...

<wsdl:operation name="isAlive">
    <wsdl:output message="tns1:isAliveMessage"/>
</wsdl:operation>
Run Code Online (Sandbox Code Playgroud)

...但由于缺少输入,我的一个工具中出现了解析错误.我找到了几个例子,其中定义了输入和消息,相应的类型定义是空的,即<xsd:complexType name="somename"/>.这是否更好?

谢谢!

soap wsdl

11
推荐指数
2
解决办法
9206
查看次数

使单个WCF服务支持SOAP,REST和WSDL

我正在尝试在.NET 3.5中构建一个支持SOAP的C#服务 - 并显示WSDL和REST.

SOAP服务和WSDL生成很容易使用ServiceHostBasicHttpBinding类.得到了工作,客户很高兴.

由于SOAP调用所有使用的简单参数,因此客户端开发人员为某些命令请求了REST接口.所以我改变了的ServiceHost类的WebServiceHost,根据需要添加WebInvokeWebGet属性,增加了一个WebHttpBinding班,和宾果- REST和SOAP进行了两个工作了一个服务.很酷,改变一个界面,REST和SOAP都得到了新的东西.

但是有一个问题 - 不再生成WSDL.我无法浏览到http:// server/service?wsdl并获取WSDL文件.检查MSDN文档,这似乎是默认行为WebServiceHost.

问题:我可以覆盖此行为以便可以获取WSDL吗?没有与以前相同的URL - 它可以更改 - 但我只需要在服务中使用一些URL来为这些SOAP开发人员获取WSDL.

c# rest wcf soap wsdl

11
推荐指数
1
解决办法
1万
查看次数

关于WSDL vs MEX的所有内容?

我无法打开元数据网址http://localhost:8082/Tasks/mex,即使我在配置文件中添加了mexHttpBinding.我可以在浏览器中查看此MEX端点吗?

配置文件如下所示:

<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
Run Code Online (Sandbox Code Playgroud)

问题:

  • MEX与WSDL不同吗?如果没有,那么为什么我们需要一个超过WSDL的MEX端点?
  • 在WSDL中,我看到缺少WSDL类型信息.这是默认的吗?我可以查看WSDL中的类型信息吗?

wcf wsdl

11
推荐指数
2
解决办法
9920
查看次数

Java:简单的SOAP客户端

我正在寻找Java的SOAP客户端.

Apache Axis对我来说看起来很臃肿.我不明白为什么Java必须如此复杂.例如,在PHP中,我所要做的就是:

<?php
$global_service_wsdl='https://api.betfair.com/global/v3/BFGlobalService.wsdl';
$betfair=new SoapClient($global_service_wsdl);

$params=array("request"=>
    array("header"=>
         array("clientStamp"=>0,"sessionToken"=>$session_token)),"locale"=>""
);
$response=$betfair->getAllEventTypes($params);
?>
Run Code Online (Sandbox Code Playgroud)

我的$ response对象包含我需要的所有信息.

任何人都可以建议我如何在没有太多麻烦的情况下在Java中实现这样的东西?

提前谢谢了,

〜编辑1~

@jarnbjo:

这对我来说非常有用.我坚持的一点是我需要输入什么来运行代码?

我运行了这个命令:sh wsdl2java.sh -o output -a -uri https://api.betfair.com/global/v3/BFGlobalService.wsdl

并建立了输出.你认为这比PHP快吗?另外,我有一个"异步"选项.这是否意味着我可以进行异步调用?那将非常有用.我想在基于Java的websocket服务器中运行所有这些.

java soap wsdl

11
推荐指数
1
解决办法
2万
查看次数

为什么SOAP没有WSDL?

是否有充分的理由在不使用WSDL"文件"的情况下部署或使用SOAP服务?

说明:

我遇到的情况是第三方创建的SOAP服务不遵循他们也创建的WSDL文件.我想我不得不忽略WSDL文件才能使用这个服务.因此我正在研究如何做到这一点.

我真正想知道为什么甚至可以做到这一点?意图是什么?

它的设计是为了让我们可以使用穷人程序员提供的糟糕服务吗?当然必须有更好的理由.我几乎希望它不可能.然后我可以要求他们正确地写出来.

soap wsdl

11
推荐指数
1
解决办法
1万
查看次数

Eclipse - 尝试基于WSDL文件创建Web Service时出现意外异常

我正在尝试基于WSDL文件在Eclipse Java EE IDE(Helios Service Release 2,Windows 7 32位)中创建Web服务,但是当我在创建向导中单击"完成"时,我总是得到:

IWAB0014E发生意外异常.

(details: java.lang.NullPointerException
      at org.eclipse.jst.ws.internal.axis.creation.ui.widgets.skeleton.SkeletonConfigWidgetDefaultingCommand.getOutputJavaFolder(SkeletonConfigWidgetDefaultingCommand.java:86)
      at org.eclipse.jst.ws.internal.axis.creation.ui.widgets.skeleton.SkeletonConfigWidgetDefaultingCommand.execute(SkeletonConfigWidgetDefaultingCommand.java:47)
      at org.eclipse.wst.command.internal.env.core.fragment.CommandFragmentEngine.runCommand(CommandFragmentEngine.java:419)
      at **...**)
Run Code Online (Sandbox Code Playgroud)

我100%确定WSDL文件是正确的 - 无论文件是多么微不足等,都会发生错误.

我这样做的方式:

  1. 创建一个通用项目并向其添加一个新的WSDL文件;
  2. 文件 - >新建 - >其他 - > Web服务 - > Web服务
  3. 在Web Service向导中,我选择"自上而下Java Bean Service"并选择适当的WSDL文件.
  4. 单击"下一步"或"完成"时,会发生上述异常,并且不会生成任何源文件.

我正在使用Tomcat 6.0服务器(localhost),但我认为这是无关紧要的.

任何有关如何解决这个问题的提示将不胜感激.

java eclipse wsdl web-services

11
推荐指数
3
解决办法
3万
查看次数

使用通用类型优化多个WSDL的WSImport

我正在开发一个涉及20多个不同WebServices的相当大的WS项目.这些Web服务虽然彼此独立,但它们共享一组相当大的常见类型.我们在构建脚本中使用wsimport作为ant目标来生成代理类.

问题:随着我们的WS(和相应的WSDL)的数量增加,我们注意到我们的代理类的构建时间已经非常陡峭.经过进一步的调查(和分析),我们发现wsimport花费了大量的构建时间来重复生成常见类型.它已经达到了这样的程度,即生成,编译和打包这些代理类及其常见类型大约需要15-20分钟.这对我们来说是一个问题,我们正在寻找缩短构建时间的方法.

问题:有没有办法只生成一次常见类型?我研究了谷歌搜索找到的一些解决方案.一个是编写WSDL累加器,它解析WSDL并将它们组合成一个WSDL,因此wsimport只被调用一次.另一个暗示使用剧集文件,但进一步调查只是表明使用这种方法存在问题.

注意:我看过一些较旧的类似问题,但没有一个有任何答案.

wsimport多个生成的wsdl

如何告诉wsimport单独的WSDL文件引用相同的对象类?

java soap wsdl web-services wsimport

11
推荐指数
1
解决办法
2228
查看次数

asp web api json序列化返回私有属性

我有一个Web api控制器类,我在从Web api控制器的WSDL生成的代理类上调用一个方法,然后返回一个WSDL代理类中定义的类型的对象.

但返回的xml/json包含代理类的私有成员

私人会员是

    private string companyField;

    private string soldBPField;

    private string fromDateField;

    private string toDateField;

    private long succStatusField;
Run Code Online (Sandbox Code Playgroud)

并且返回的xml是:

<companyField>700</companyField>
<soldBPField>999000353</soldBPField>
<fromDateField>01-01-2012</fromDateField>
<toDateField>01-01-2013</toDateField>
Run Code Online (Sandbox Code Playgroud)

返回的json也很相似

我更改了global.asax中的xml格式化程序,如下所示:

var xml = GlobalConfiguration.Configuration.Formatters.XmlFormatter;
xml.UseXmlSerializer = true;
Run Code Online (Sandbox Code Playgroud)

这改变了返回的XML:

<company>700</company>
<soldBP>999000353</soldBP>
<fromDateField>01-01-2012</fromDate>
<toDate>01-01-2013</toDate>
Run Code Online (Sandbox Code Playgroud)

但是返回的json仍然包含私有变量的名称

谁能帮我这个

serialization json wsdl asp.net-web-api

11
推荐指数
1
解决办法
3102
查看次数

Java Web服务错误:com.ctc.wstx.exc.WstxEOFException:prolog中出现意外的EOF

我在创建Java客户端并将其连接到正在运行的Web Service时遇到问题.

我使用以下代码:

Service myService  = null;
URL wsdlLocation = new URL("http://myservice?wsdl");
QName serviceName = new QName(wsdlLocation, "MyService");
Service myService = new Service(wsdlLocation, serviceName);
Run Code Online (Sandbox Code Playgroud)

使用以下命令创建Service类的位置:

wsimport -d gen -keep http://myservice?wsdl
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用Apache cxf 2.4的wsdl2java生成的客户端,但得到了相同的结果.

(我已经在我使用原始代码的代码中更改了此帖子的WSDL位置和服务类名称.)

但是当我使用新的Service()命令创建服务时,我在appserver上调用Web Service时遇到异常.但是:我用SOAP UI测试了wsdl位置,它运行得很好.此外,我使用Soap UI创建了一个模拟服务,我的Java客户端可以连接到它,调用它并获得结果.当我想要调用在appserver上运行的Web服务时,会出现问题.

堆栈跟踪:

javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
        at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:149)
        at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:98)
        at javax.xml.ws.Service.<init>(Service.java:76)
        at MyService.<init>(MyService.java:42)
        at mypackage.createService(AClass.java:288)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
Caused by: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
        at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:100)
        at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:199)
        at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:147)
        ... 12 more …
Run Code Online (Sandbox Code Playgroud)

java wsdl web-services jax-ws wsimport

11
推荐指数
1
解决办法
6万
查看次数

使用ws寻址从Web服务检索数据

我在客户端站点上有一个Web服务,我需要从中报告.

在本地,我使用提供的wsdl模仿服务,并且能够报告这些.但是,现在指向客户端站点我无法访问数据,因为服务需要包含ws寻址头.

网络服务期待如下:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:add="http://www.w3.org/2005/08/addressing" xmlns:ns="CustomerNamespace" xmlns:sch="Schema.xsd">
   <soapenv:Header>
      <add:From>
         <add:Address>Something</add:Address>
         <add:ReferenceParameters>
            <ns:TransactionGroupID>SomeOtherThing</ns:TransactionGroupID>
            <ns:SenderID>911</ns:SenderID>
         </add:ReferenceParameters>
      </add:From>
      <add:Action>Request</add:Action>
      <add:MessageID>TestGUID</add:MessageID>
   </soapenv:Header>
   <soapenv:Body>
      <sch:Request>
         <sch:SearchCustomerSystem>SystemXYZ</sch:SearchCustomerSystem>
          <sch:ServiceID>999999999999</sch:ServiceID>
      </sch:Request>
   </soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

目前,我可以通过以下方式获得SSRS:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <Request xmlns="Schema.xsd">
      <ServiceID>
          999999999999
        </ServiceID>
    </Request>
  </soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)

除了创建自定义数据扩展(我宁愿避免)之外,还有一种方法可以将ws寻址标头放入请求中吗?

xml soap wsdl reporting-services

11
推荐指数
1
解决办法
492
查看次数