标签: wsdl

在wsdl模式下使用PHP SoapClient类的可选参数

使用PHP5.x上的SoapClient类并对付其方法中具有可选参数的SOAP Web服务,如果使用非wsdl模式,则不会有任何问题.

但是,至少在默认情况下,使用wsdl模式,如果你没有填充所有参数,你将收到如下错误:SOAP-ERROR:Encoding:object没有'xxx'属性

如果不使用非wsdl模式并且没有填充所有参数,有没有办法避免该错误?

php soap wsdl

5
推荐指数
1
解决办法
2474
查看次数

WCF wsdl wsdl:导入位置,soap:地址位置是否有机器名?

您好

我们使用WCF服务开发了Web服务,并使用IIS 5.1托管在Windows 2003服务器计算机上.WCF托管在basicHttpBinding上.

当尝试访问服务"*.svc?wsdl"的 wsdl时,它生成错误的wsdl,即wsdl不能用于java和php客户端.
当我检查wsdl时

<wsdl:import namespace="xxxxx" location="http://machine name/xxx/xxx.svc?wsdl=wsdl0"/> 
<soap:address location="http://machine name/xcxx/xxx.svc" /> 
Run Code Online (Sandbox Code Playgroud)

如何删除机器并将其替换为我的网站网址?
如何生成ASMX Web服务将生成的完整WSDL文档?

.net wcf wsdl

5
推荐指数
1
解决办法
8021
查看次数

SOAP Web服务的发展

是否有关于如何处理SOAP Web服务演变的指南/教程?

我可以看到更改现有方法或类型可能不起作用,但我可以添加新方法,复杂类型,枚举值而不破坏现有客户端吗?

soap wsdl web-services

5
推荐指数
1
解决办法
369
查看次数

从Web服务端点地址获取WSDL

是否存在使用服务端点地址获取服务WSDL的通用方法.我知道这可以通过将?wsdl附加到Axis2服务来完成.但是这个属性是否适用于其他Web服务容器?

service wsdl

5
推荐指数
1
解决办法
5189
查看次数

用红宝石和savon消费肥皂服务

我正在尝试使用ruby和Savon来使用Web服务.

测试服务是http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2

require 'rubygems'
require 'savon'

client = Savon::Client.new "http://www.webservicex.net/stockquote.asmx?WSDL"
client.get_quote do |soap| 
  soap.body = {:symbol => "AAPL"} 
end

返回SOAP异常.检查soap信封,它在我看来soap请求没有正确的命名空间.

任何人都可以建议我可以做些什么来使这项工作?我也遇到与其他Web服务端点相同的问题.

谢谢,

ruby soap wsdl savon

5
推荐指数
1
解决办法
4076
查看次数

在WCF Web服务的WSDL中提供不同的端点地址

我有一个相当标准的WCF服务(在IIS7上托管),在查询时生成一个相当标准的WSDL ?wsdl:

<wsdl:definitions>
  <!-- ... -->
  <wsdl:service>
    <wsdl:port>
      <soap:address location="https://machine/virtual_dir/servicename.svc"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>
Run Code Online (Sandbox Code Playgroud)

(省略无聊的位)

我正在以一种快速的方式将生成的WSDL中给出的地址更改为完全不同的地址,例如:

https://othermachine/other_dir/other_service.svc
Run Code Online (Sandbox Code Playgroud)

这样做最简单的方法是什么?

wcf iis-7 wsdl web-services

5
推荐指数
1
解决办法
5105
查看次数

使用开始和结束时间之间的时间过滤数组或XML

我有一个API调用.该调用返回XML,我将XML转换为数组,然后使用json_encode在jsonp调用中发回响应.我正在做的是工作,但API不允许我按状态过滤,按开始和结束时间过滤,并确保房间可用.

几个jsponp调用让它变得疯狂.再一次,我所拥有的是工作,但我需要找到一种方法来再次使用我的结果过滤.我已经返回了正确的状态和正确的日期,但我仍然需要过滤掉时间.如果时间目前是上午10点29分,我不想显示从上午10点半开始预订的房间,因为直到上午10点半才开始预订.因此,如果我当前的时间是上午10:29,我需要过滤我的数组中的事件,并且只显示具有当前时间的开始和结束时间的事件.

从上午10点到11点的预订应该留在我的阵列中,但是从下午2-4点开始的预订不应该出现在我的阵列中.正如我所说,数组首先是一个返回的XML文档,然后是一个数组,然后是JSON,所以在技术上我可以使用任何工作来过滤.PHP以XML格式过滤,PHP过滤数组.甚至Javascript也可以通过我的ajax调用来准备PHP文件.

在我将其转换为JSON并返回之前,这是我的数组.我过滤的时间应该是TimeEventStart和TimeEventEnd.我可以使用当前的Javascript时间或PHP日期函数时间.我可以过滤数组或使用类似XMLPath的东西进行过滤.不确定什么是最有效的,最好的.

$axml = Array{
   "Bookings":{
      "Data":[
         {
            "BookingDate":[
               "2014-05-09T00:00:00"
            ],
            "RoomDescription":[
               "Room06"
            ],
            "TimeEventStart":[
               "2014-05-09T14:00:00"
            ],
            "TimeEventEnd":[
               "2014-05-09T14:30:00"
            ],
            "EventName":[
               "Jake Long"
            ],
            "SetupTypeDescription":[
               "(none)"
            ],
            "ReservationID":[
               "137"
            ],
            "OpenTime":[
               "1900-01-01T00:00:00"
            ],
            "CloseTime":[
               "1900-01-01T00:00:00"
            ],
            "EventTypeDescription":[
               [

               ]
            ],
            "BookingID":[
               "709"
            ],
            "TimeBookingStart":[
               "2014-05-09T14:00:00"
            ],
            "TimeBookingEnd":[
               "2014-05-09T14:30:00"
            ],
            "GMTStartTime":[
               "2014-05-09T18:00:00"
            ],
            "GMTEndTime":[
               "2014-05-09T18:30:00"
            ],
            "TimeZone":[
               "ET"
            ],
            "RoomCode":[
               "R06"
            ],
            "Room":[
               "Room 6"
            ],
            "RoomID":[
               "34"
            ],
            "StatusID":[
               "3"
            ],
            "EventTypeID":[
               "0"
            ],
            "DateAdded":[
               "2014-05-09T13:47:29.087"
            ],
            "DateChanged":[ …
Run Code Online (Sandbox Code Playgroud)

php xml jquery wsdl jsonp

5
推荐指数
2
解决办法
441
查看次数

Modify package names for java classes generated from wsdl

如何修改从多个wsdls生成的java类的包名称.我有两个wsdls,它们都生成类ObjectFactory,package-info等类,具有完全相同的包名.因此,我无法在我的代码中组织导入.对于wsdls,我的包看起来像这样 -

WSDL A
    com.test.customerinfo.dto
    com.test.customerinfo.exceptions
    com.test.customerinfo.service

WSDL B    
    com.test.customerinfo.dto
    com.test.customerinfo.exceptions
    com.test.customerinfo.service
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像这样 -

WSDL A
    com.test.customerinfo.dto
    com.test.customerinfo.exceptions
    com.test.customerinfo.service

WSDL B    
    com.testOne.customerinfo.dto
    com.testOne.customerinfo.exceptions
    com.testOne.customerinfo.service
Run Code Online (Sandbox Code Playgroud)

我试过这个,但它没有用 -

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>2.7.7</version>
    <executions>
       <execution>
          <id>generate-sources</id>
          <phase>generate-sources</phase>
          <configuration>
             <sourceRoot>target/generated-sources/test/java</sourceRoot>
             <wsdlOptions>
                <wsdlOption>
                   <wsdl>src/main/resources/wsdl/test/GetInfo.wsdl</wsdl>
                   <extraargs>
                      <extraarg>-server</extraarg>
                      <extraarg>-client</extraarg>
                      <extraarg>-impl</extraarg>
                      <extraarg>-verbose</extraarg>
                      <extraarg>-p</extraarg>
                      <extraarg>http://dto.customerinfo.test.com/=com.test.customerinfo.dto</extraarg>
                      <extraarg>-p</extraarg>
                      <extraarg>http://services.customerinfo.test.com/=com.test.customerinfo.services</extraarg>
                      <extraarg>-p</extraarg>
                      <extraarg>http://exceptions.customerinfo.test.com/=com.test.customerinfo.exceptions</extraarg>
                   </extraargs>
                   <frontEnd>jaxws21</frontEnd>
                   <faultSerialVersionUID>1</faultSerialVersionUID>
                </wsdlOption>
             </wsdlOptions>
          </configuration>
          <goals>
             <goal>wsdl2java</goal>
          </goals>
       </execution>
    </executions>
 </plugin>
Run Code Online (Sandbox Code Playgroud)

请指教.

java wsdl

5
推荐指数
1
解决办法
7728
查看次数

为什么Microsoft在导入WSDL时将XSD xs:integer与字符串匹配?

在webservice上查看WDSL.xml声明数据类型是一个整数,但是,在调用web方法时,该方法需要一个字符串,WDSL代码如下

<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType:="integer", Order:=0)> _

Public Property ID() As String
    Get
        Return Me.ID
    End Get
    Set(value As String)
        Me.ID= value
    End Set
End Property
Run Code Online (Sandbox Code Playgroud)

它是否正确?我很困惑,为什么它需要传递一个字符串,如果序列化说的是整数类型?

我的经验告诉我,在他们这边,即服务器,他们会将字符串转换为整数?正确?

谢谢

xml vb.net wcf xsd wsdl

5
推荐指数
1
解决办法
440
查看次数

可以在指定WSDL文件时使用XSD断言

我有一个WSDL文件,其中还包含其中使用的所有类型(通过<wsdl:types> 标记).在定义类型时,我有这样的事情:

<wsdl:definitions name="service"
        targetNamespace="http://www.xxx.yyy/reg/definitions" xmlns="http://schemas.xmlsoap.org/wsdl/"
        xmlns:tax="http://www.xxx.yyy/reg/definitions" xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    .............
    <xs:complexType name="CompanyName">
        <xs:sequence>
            <xs:element name="Name" type="xs:string" />
            <xs:element name="ShortName" type="xs:string" minOccurs="0" />
        </xs:sequence>
        <xs:attribute name="Language" type="tax:LanguageType" use="required"/>
        <xs:assert test="ShortName or @Language != 'Language1'"/>
    </xs:complexType>
    .............
</wsdl:definitions>
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我尝试在Tomcat上启动应用程序时,它无法提供以下异常:

javax.xml.ws.WebServiceException: org.xml.sax.SAXParseException; s4s-elt-invalid-content.1: The content of 'CompanyName' is invalid.  Element 'assert' is invalid, misplaced, or occurs too often.
Run Code Online (Sandbox Code Playgroud)

WSDL版本是1.2,我不知道在其中描述类型时它使用哪个版本的xsd,所以我不知道它是xsd版本(1.0对1.1)问题还是别的.

有人可以帮助我找到真正的问题吗?

编辑:我添加了wsdl的标题.我已将version attribute(version="1.1")添加到<xs:schema> 定义中,但这也没有帮助:

<xs:schema targetNamespace="http://www.xxx.yyy/reg/definitions" elementFormDefault="qualified" version="1.1">
Run Code Online (Sandbox Code Playgroud)

java xsd tomcat wsdl web-services

5
推荐指数
1
解决办法
287
查看次数

标签 统计

wsdl ×10

soap ×3

wcf ×3

web-services ×3

java ×2

php ×2

xml ×2

xsd ×2

.net ×1

iis-7 ×1

jquery ×1

jsonp ×1

ruby ×1

savon ×1

service ×1

tomcat ×1

vb.net ×1