[kepler-users] WebServices/WSWithComplexTypes Actor behaviour issue

Simon Collins simonncollins at gmail.com
Mon Jun 20 21:16:30 PDT 2011


Hi,

Im currently attempting to access a web service via wsdl i have setup
(attached is the wsdl served to clients that query ?wsdl).

I can format a string "manually" for testing that adheres to the required
response format, however when it is passed into the WebServices actor, all
the XML gets escaped by the actor, ive tried escaping the XML symbols myself
(hoping it might escape the escapes) but i still end up getting a mangled
message on the server side.

I also tried using the complex type option for the WSWithComplexTypes actor,
and unfortunately despite playing around with different settings and
arrangements, i always end up with the server receiving
"<parameters></parameters>" as the response payload, ie. its like the
complex types are ignored/discarded.

So i have 2 questions for how i might move forward on this:

1. is there a way to deliver an XML payload as-is via any actor that then
delivers the payload as a http post to a specified endpoint? (this might be
a web service actor that wraps the payload as appropriate to the parsed
wsdl, or perhaps a more raw http comms actor that might require more
explicit post content construction).

2. is it reasonably straight forward to grab the source for the project and
edit the webservices actor to allow a user option for delivering a
non-escaped XML payload, or perhaps looking at WSWithComplexTypes actor and
exploring (fixing?) its behaviour.

Cheers,

Simon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.nceas.ucsb.edu/kepler/pipermail/kepler-users/attachments/20110621/90932bb8/attachment.html>
-------------- next part --------------
<wsdl:definitions xmlns:mv="SERVICEADDRESS"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="MyServiceDef"
targetNamespace="SERVICEADDRESS">
	<wsdl:types>
		<xsd:schema targetNamespace="SERVICEADDRESS">
			<xsd:element name="InvokeRequest">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Input">
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element name="test_data">
										<xsd:complexType>
											<xsd:sequence>
												<xsd:element name="Data" type="xsd:string">
												</xsd:element>
											</xsd:sequence>
										</xsd:complexType>
									</xsd:element>
								</xsd:sequence>
							</xsd:complexType>
						</xsd:element>
						<xsd:element name="Output">
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element name="test_output_stream_file">
										<xsd:complexType>
											<xsd:sequence>
												<xsd:element name="Stream"
												type="xsd:string"></xsd:element>
											</xsd:sequence>
										</xsd:complexType>
									</xsd:element>
								</xsd:sequence>
							</xsd:complexType>
						</xsd:element>
						<xsd:element name="Progress" type="xsd:string">
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="InvokeResponse">
			</xsd:element>
			<xsd:element name="InvokeFault">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="InvokeFault" type="xsd:string">
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:schema>
	</wsdl:types>
	<wsdl:message name="InvokeRequest">
		<wsdl:part element="mv:InvokeRequest" name="parameters" />
	</wsdl:message>
	<wsdl:message name="InvokeResponse">
		<wsdl:part element="mv:InvokeResponse" name="parameters" />
	</wsdl:message>
	<wsdl:message name="InvokeFault">
		<wsdl:part name="parameters" element="mv:InvokeFault">
		</wsdl:part>
	</wsdl:message>
	<wsdl:portType name="MyServiceDef">
		<wsdl:operation name="Invoke">
			<wsdl:input message="mv:InvokeRequest" />
			<wsdl:output message="mv:InvokeResponse" />
			<wsdl:fault name="fault" message="mv:InvokeFault">
			</wsdl:fault>
		</wsdl:operation>
	</wsdl:portType>
	<wsdl:binding name="MyServiceDefSOAP" type="mv:MyServiceDef">
		<soap:binding style="document"
		transport="http://schemas.xmlsoap.org/soap/http" />
		<wsdl:operation name="Invoke">
			<soap:operation soapAction="SERVICEADDRESS/Invoke" />
			<wsdl:input>
				<soap:body use="literal" />
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal" />
			</wsdl:output>
		</wsdl:operation>
	</wsdl:binding>
	<wsdl:service name="MyServiceDef">
		<wsdl:port binding="mv:MyServiceDefSOAP" name="MyServiceDefSOAP">
			<soap:address location="SERVICEADDRESS" />
		</wsdl:port>
	</wsdl:service>
</wsdl:definitions>


More information about the Kepler-users mailing list