[Mono-list] ruby-savon fetch data from mono-wcf

Dave Curylo curylod at asme.org
Fri Dec 21 11:08:04 UTC 2012


I really recommend against using WCF on mono. I've found it to have
performance and stability issues, not too mention that a large amount of it
is simply not implemented. If you want good cross platform web services
under .NET & mono, use either the older .asmx style services or the third
party, open source ServiceStack.net services. I really recommend the latter
as you have much better support for both SOAP and REST style services right
out of the box with ServiceStack.

On Friday, December 21, 2012, Wang Song <7wangsong at gmail.com> wrote:

> hi,
>  i am new to mono wcf, and i came across some problems about my code.
>  recent, i use ruby-savon to get data from wcf host on mono.
>
>  and this is my ruby code:
> *     client = Savon::Client.new do*
> *    wsdl.document="http://localhost:9000/MonoWcf/MonoSevice/wsdl"*
> *    end*
> *
> *
> *    puts client.wsdl.soap_actions*
> *    response = client.request  :get_data*
> *
> *
> and this this puts :
>  ruby -KU -- '/home/charlot/Documents/Aptana Studio 3
> Workspace/rubyfun/soap/savon.rb'
> W, [2012-12-21T02:20:05.484988 #10221]  WARN -- : HTTPI executes HTTP GET
> using the httpclient adapter
> get_data
> get_data_using_data_contract
> D, [2012-12-21T02:20:05.566730 #10221] DEBUG -- : SOAP request:
> http://localhost:9000/MonoWcf/MonoSevice/soap
> D, [2012-12-21T02:20:05.567166 #10221] DEBUG -- : SOAPAction: "
> http://localhost:9000/IMonoService/GetData", Content-Type:
> text/xml;charset=UTF-8, Content-Length: 293
> D, [2012-12-21T02:20:05.567517 #10221] DEBUG -- : <?xml version="1.0"
> encoding="UTF-8"?><env:Envelope xmlns:xsd="
> http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/
> XMLSchema-instance" xmlns:wsdl="http://tempuri.org/" xmlns:env="
> http://schemas.xmlsoap.org/soap/envelope/
> "><env:Body><GetData></GetData></env:Body></env:Envelope>
> W, [2012-12-21T02:20:05.567991 #10221]  WARN -- : HTTPI executes HTTP POST
> using the httpclient adapter
> D, [2012-12-21T02:20:05.571580 #10221] DEBUG -- : SOAP response (status
> 415):
> D, [2012-12-21T02:20:05.572267 #10221] DEBUG -- :
> /usr/local/lib/ruby/gems/1.9.1/gems/savon-1.2.0/lib/savon/soap/response.rb:108:in
> `raise_errors': Savon::HTTP::Error
>         from
> /usr/local/lib/ruby/gems/1.9.1/gems/savon-1.2.0/lib/savon/soap/response.rb:18:in
> `initialize'
>         from
> /usr/local/lib/ruby/gems/1.9.1/gems/savon-1.2.0/lib/savon/soap/request.rb:35:in
> `new'
>         from
> /usr/local/lib/ruby/gems/1.9.1/gems/savon-1.2.0/lib/savon/soap/request.rb:35:in
> `response'
>         from
> /usr/local/lib/ruby/gems/1.9.1/gems/savon-1.2.0/lib/savon/client.rb:86:in
> `request'
>         from /home/charlot/Documents/Aptana Studio 3
> Workspace/rubyfun/soap/savon.rb:19:in `dosoap'
>         from /home/charlot/Documents/Aptana Studio 3
> Workspace/rubyfun/soap/savon.rb:25:in `<main>'
>
>   and this is the mono-wcf wsdl :
>
> <definitions name="service" targetNamespace="http://tempuri.org/">
>  <import location="
> http://localhost:9000/MonoWcf/MonoSevice/wsdl?wsdl=wsdl0" namespace="
> http://localhost:9000"/>
>  <types/>
> <binding name="BasicHttpBinding_IMonoService" type="i0:IMonoService">
>  <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
> <operation name="GetData">
>  <soap:operation soapAction="http://localhost:9000/IMonoService/GetData"
> style="document"/>
>  <input>
> <soap:body use="literal"/>
> </input>
>  <output>
> <soap:body use="literal"/>
> </output>
>  </operation>
> <operation name="GetDataUsingDataContract">
> <soap:operation soapAction="
> http://localhost:9000/IMonoService/GetDataUsingDataContract"
> style="document"/>
>  <input>
> <soap:body use="literal"/>
> </input>
>  <output>
> <soap:body use="literal"/>
> </output>
>  </operation>
> </binding>
> <service name="service">
>  <port name="BasicHttpBinding_IMonoService"
> binding="tns:BasicHttpBinding_IMonoService">
> <soap:address location="http://localhost:9000/MonoWcf/MonoSevice/soap"/>
>  </port>
> </service>
> </definitions>
>
>   but when i host wcf in windows(7), it really get the data.
>   and this window-wcf wsdl :
> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="
> http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsu="
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="
> http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:tns="http://localhost:9000"
> xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsp="
> http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsap="
> http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsaw="
> http://www.w3.org/2006/05/addressing/wsdl" xmlns:msc="
> http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsa10="
> http://www.w3.org/2005/08/addressing" xmlns:wsx="
> http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsam="
> http://www.w3.org/2007/05/addressing/metadata" name="MonoService"
> targetNamespace="http://localhost:9000">
> <wsdl:types>
> <xsd:schema targetNamespace="http://localhost:9000/Imports">
> <xsd:import schemaLocation="
> http://localhost:9000/MonoWcf/MonoSevice/wsdl?xsd=xsd0" namespace="
> http://localhost:9000"/>
> <xsd:import schemaLocation="
> http://localhost:9000/MonoWcf/MonoSevice/wsdl?xsd=xsd1" namespace="
> http://schemas.microsoft.com/2003/10/Serialization/"/>
> <xsd:import schemaLocation="
> http://localhost:9000/MonoWcf/MonoSevice/wsdl?xsd=xsd2" namespace="
> http://schemas.datacontract.org/2004/07/MonoWcf"/>
> </xsd:schema>
> </wsdl:types>
> <wsdl:message name="IMonoService_GetData_InputMessage">
> <wsdl:part name="parameters" element="tns:GetData"/>
> </wsdl:message>
> <wsdl:message name="IMonoService_GetData_OutputMessage">
> <wsdl:part name="parameters" element="tns:GetDataResponse"/>
> </wsdl:message>
> <wsdl:message name="IMonoService_GetDataUsingDataContract_InputMessage">
> <wsdl:part name="parameters" element="tns:GetDataUsingDataContract"/>
> </wsdl:message>
> <wsdl:message name="IMonoService_GetDataUsingDataContract_OutputMessage">
> <wsdl:part name="parameters"
> element="tns:GetDataUsingDataContractResponse"/>
> </wsdl:message>
> <wsdl:portType name="IMonoService">
> <wsdl:operation name="GetData">
> <wsdl:input wsaw:Action="http://localhost:9000/IMonoService/GetData"
> message="tns:IMonoService_GetData_InputMessage"/>
> <wsdl:output wsaw:Action="
> http://localhost:9000/IMonoService/GetDataResponse"
> message="tns:IMonoService_GetData_OutputMessage"/>
> </wsdl:operation>
> <wsdl:operation name="GetDataUsingDataContract">
> <wsdl:input wsaw:Action="
> http://localhost:9000/IMonoService/GetDataUsingDataContract"
> message="tns:IMonoService_GetDataUsingDataContract_InputMessage"/>
> <wsdl:output wsaw:Action="
> http://localhost:9000/IMonoService/GetDataUsingDataContractResponse"
> message="tns:IMonoService_GetDataUsingDataContract_OutputMessage"/>
> </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="soap" type="tns:IMonoService">
> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
> <wsdl:operation name="GetData">
> <soap:operation soapAction="http://localhost:9000/IMonoService/GetData"
> style="document"/>
> <wsdl:input>
> <soap:body use="literal"/>
> </wsdl:input>
> <wsdl:output>
> <soap:body use="literal"/>
> </wsdl:output>
> </wsdl:operation>
> <wsdl:operation name="GetDataUsingDataContract">
> <soap:operation soapAction="
> http://localhost:9000/IMonoService/GetDataUsingDataContract"
> style="document"/>
> <wsdl:input>
> <soap:body use="literal"/>
> </wsdl:input>
> <wsdl:output>
> <soap:body use="literal"/>
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:service name="MonoService">
> <wsdl:port name="soap" binding="tns:soap">
> <soap:address location="http://localhost:9000/MonoWcf/MonoSevice/soap"/>
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
>
> my os is: ubuntu 12
> mono version:
> Mono JIT compiler version 2.10.8.1 (Debian 2.10.8.1-1ubuntu2.2)
> Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors.
> www.mono-project.com
>  TLS:           __thread
> SIGSEGV:       altstack
> Notifications: epoll
>  Architecture:  x86
> Disabled:      none
> Misc:          softdebug
>  LLVM:          supported, not enabled.
> GC:            Included Boehm (with typed GC and Parallel Mark)
>
> really thanks your help!
>
> from mueven
> shanghai.china
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-list/attachments/20121221/4b3e63b0/attachment-0001.html>


More information about the Mono-list mailing list