Hi Massimo, I just extended the example program I worked up to include all 4 main ways of calling a Web Service. These are: Http GET, Http POST, SOAP 1.1, and SOAP 1.2.
One problem I ran into is that Gambas3 seems a little too fussy about the valid content types and will give a runtime error on ones it doesn't like but it seems like they are perfectly valid. I found the trick was to set the content-type as first param on the call to HttpClient.Post() to empty string and 'manually' send a Content-Type header. Be aware that the public Web Service used here can be a little flaky, and does time out now and then (guess it depends how many people are hitting their server at once...). You can find the code on pastebin, nicely formatted, at http://pastebin.com/2gyxGzAP and here's the code in plain text style: ************************************************************************************************ Public Sub Test_Click() Dim http As HttpClient http = New HttpClient As "http" doHttpGet(http) showResult("Http GET", http) http = New HttpClient As "http" doHttpPost(http) showResult("Http POST", http) http = New HttpClient As "http" doSOAP11(http) showResult("SOAP 1.1", http) http = New HttpClient As "http" doSOAP12(http) showResult("SOAP 1.2", http) End Public Sub doHttpGet(http As HttpClient) http.URL = "http://www.webservicex.net/ConvertTemperature.asmx/ConvertTemp?Temperature=100&FromUnit=degreeCelsius&ToUnit=degreeFahrenheit" http.Async = False http.Timeout = 60 http.Get() End Public Sub doHttpPost(http As HttpClient) Dim data As String http.URL = "http://www.webservicex.net/ConvertTemperature.asmx/ConvertTemp" http.Async = False http.Timeout = 60 data = "Temperature=100&FromUnit=degreeCelsius&ToUnit=degreeFahrenheit" Print "Http POST data: " & data http.Post("application/x-www-form-urlencoded", data) End Public Sub doSoap11(http As HttpClient) Dim data, aHeader As String Dim headers As String[] http.URL = "http://www.webservicex.net/ConvertTemperature.asmx" http.Async = False http.Timeout = 60 data = "<?xml version=" & Chr$(34) & "1.0" & Chr$(34) & " encoding=" & Chr$(34) & "utf-8" & Chr$(34) & "?>" & gb.newline & "<soap:Envelope xmlns:xsi=" & Chr$(34) & "http://www.w3.org/2001/XMLSchema-instance" & Chr$(34) & " xmlns:xsd=" & Chr$(34) & "http://www.w3.org/2001/XMLSchema" & Chr$(34) & " xmlns:soap=" & Chr$(34) & "http://schemas.xmlsoap.org/soap/envelope/" & Chr$(34) & ">" & gb.newline & " <soap:Body>" & gb.newline & " <ConvertTemp xmlns=" & Chr$(34) & "http://www.webserviceX.NET/" & Chr$(34) & ">" & gb.newline & " <Temperature>100</Temperature>" & gb.newline & " <FromUnit>degreeCelsius</FromUnit>" & gb.newline & " <ToUnit>degreeFahrenheit</ToUnit>" & gb.newline & " </ConvertTemp>" & gb.newline & " </soap:Body>" & gb.newline & "</soap:Envelope>" Print "Soap 1.1 data: " & data headers = ["Content-Type: text/xml; charset=utf-8", "Content-Length: " & Len(data), "SOAPAction: " & Chr$(34) & "http://www.webserviceX.NET/ConvertTemp" & Chr$(34)] For Each aHeader In headers Print "Sending SOAP 1.1 header: " & aHeader Next http.Post("", data, headers) End Public Sub doSoap12(http As HttpClient) Dim data, aHeader As String Dim headers As String[] http.URL = "http://www.webservicex.net/ConvertTemperature.asmx" http.Async = False http.Timeout = 60 data = "<?xml version=" & Chr$(34) & "1.0" & Chr$(34) & " encoding=" & Chr$(34) & "utf-8" & Chr$(34) & "?>" & gb.newline & "<soap12:Envelope xmlns:xsi=" & Chr$(34) & "http://www.w3.org/2001/XMLSchema-instance" & Chr$(34) & " xmlns:xsd=" & Chr$(34) & "http://www.w3.org/2001/XMLSchema" & Chr$(34) & " xmlns:soap12=" & Chr$(34) & "http://www.w3.org/2003/05/soap-envelope" & Chr$(34) & ">" & gb.newline & " <soap12:Body>" & gb.newline & " <ConvertTemp xmlns=" & Chr$(34) & "http://www.webserviceX.NET/" & Chr$(34) & ">" & gb.newline & " <Temperature>100</Temperature>" & gb.newline & " <FromUnit>degreeCelsius</FromUnit>" & gb.newline & " <ToUnit>degreeFahrenheit</ToUnit>" & gb.newline & " </ConvertTemp>" & gb.newline & " </soap12:Body>" & gb.newline & "</soap12:Envelope>" Print "Soap 1.2 data: " & data headers = ["Content-Type: application/soap+xml; charset=utf-8", "Content-Length: " & Len(data)] For Each aHeader In headers Print "Sending SOAP 1.2 header: " & aHeader Next http.Post("", data, headers) End Public Sub showResult(typeOfCall As String, http As HttpClient) Dim buffer, aHeader As String Print "*** Result for " & typeOfCall & " ***" If http.Status < 0 Then Print "ERROR" Else ' Success - read data If Lof(http) Then Read #http, buffer, Lof(http) Print buffer For Each aHeader In http.Headers Print "Got header: " & aHeader Next End If Print "*** End " & typeOfCall & " ***" End ************************************************************************************************ Results are as follows: *** Result for Http GET *** <?xml version="1.0" encoding="utf-8"?> <double xmlns="http://www.webserviceX.NET/">212</double> Got header: HTTP/1.1 200 OK Got header: Cache-Control: private, max-age=0 Got header: Content-Length: 96 Got header: Content-Type: text/xml; charset=utf-8 Got header: Server: Microsoft-IIS/7.0 Got header: X-AspNet-Version: 4.0.30319 Got header: X-Powered-By: ASP.NET Got header: Date: Tue, 21 Jun 2011 14:44:45 GMT *** End Http GET *** Http POST data: Temperature=100&FromUnit=degreeCelsius&ToUnit=degreeFahrenheit *** Result for Http POST *** <?xml version="1.0" encoding="utf-8"?> <double xmlns="http://www.webserviceX.NET/">212</double> Got header: HTTP/1.1 200 OK Got header: Cache-Control: private, max-age=0 Got header: Content-Length: 96 Got header: Content-Type: text/xml; charset=utf-8 Got header: Server: Microsoft-IIS/7.0 Got header: X-AspNet-Version: 4.0.30319 Got header: X-Powered-By: ASP.NET Got header: Date: Tue, 21 Jun 2011 14:45:06 GMT *** End Http POST *** Soap 1.1 data: <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ConvertTemp xmlns="http://www.webserviceX.NET/"> <Temperature>100</Temperature> <FromUnit>degreeCelsius</FromUnit> <ToUnit>degreeFahrenheit</ToUnit> </ConvertTemp> </soap:Body> </soap:Envelope> Sending SOAP 1.1 header: Content-Type: text/xml; charset=utf-8 Sending SOAP 1.1 header: Content-Length: 445 Sending SOAP 1.1 header: SOAPAction: "http://www.webserviceX.NET/ConvertTemp" *** Result for SOAP 1.1 *** <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><ConvertTempResponse xmlns="http://www.webserviceX.NET/"><ConvertTempResult>212</ConvertTempResult></ConvertTempResponse></soap:Body></soap:Envelope> Got header: HTTP/1.1 200 OK Got header: Cache-Control: private, max-age=0 Got header: Content-Length: 367 Got header: Content-Type: text/xml; charset=utf-8 Got header: Server: Microsoft-IIS/7.0 Got header: X-AspNet-Version: 4.0.30319 Got header: X-Powered-By: ASP.NET Got header: Date: Tue, 21 Jun 2011 14:45:19 GMT *** End SOAP 1.1 *** Soap 1.2 data: <?xml version="1.0" encoding="utf-8"?> <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <soap12:Body> <ConvertTemp xmlns="http://www.webserviceX.NET/"> <Temperature>100</Temperature> <FromUnit>degreeCelsius</FromUnit> <ToUnit>degreeFahrenheit</ToUnit> </ConvertTemp> </soap12:Body> </soap12:Envelope> Sending SOAP 1.2 header: Content-Type: application/soap+xml; charset=utf-8 Sending SOAP 1.2 header: Content-Length: 453 *** Result for SOAP 1.2 *** <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><ConvertTempResponse xmlns="http://www.webserviceX.NET/"><ConvertTempResult>212</ConvertTempResult></ConvertTempResponse></soap:Body></soap:Envelope> Got header: HTTP/1.1 200 OK Got header: Cache-Control: private, max-age=0 Got header: Content-Length: 365 Got header: Content-Type: application/soap+xml; charset=utf-8 Got header: Server: Microsoft-IIS/7.0 Got header: X-AspNet-Version: 4.0.30319 Got header: X-Powered-By: ASP.NET Got header: Date: Tue, 21 Jun 2011 14:45:37 GMT *** End SOAP 1.2 *** Hope this helps you to get your Web Service client up and running using whichever protocol suits you best. Regards, Caveat O> > On Mon, 2011-06-20 at 09:37 +0200, Almanova Sistemi wrote: > > > > Hallo to everyone, > > > > > > > > I am Massimo and I try to write a client software (in gambas 3) that > > > > use > > > > a web services. > > > > In other word the software send data with saop protocol an receive data > > > > with the same protocol. > > > > > > > > The information about the availebe services are described in a WSDL > > > > file. > > > > > > > > Now, hor Can I do this with gambas? > > > > > > > > Best Regards, > > > > Massimo. > > > > > > > > ------------------------------------------------------------------------------ > > > > EditLive Enterprise is the world's most technically advanced content > > > > authoring tool. Experience the power of Track Changes, Inline Image > > > > Editing and ensure content is compliant with Accessibility Checking. > > > > http://p.sf.net/sfu/ephox-dev2dev > > > > _______________________________________________ > > > > Gambas-user mailing list > > > > Gambas-user@... > > > > https://lists.sourceforge.net/lists/listinfo/gambas-user > > > > > > > ------------------------------------------------------------------------------ > > EditLive Enterprise is the world's most technically advanced content > > authoring tool. Experience the power of Track Changes, Inline Image > > Editing and ensure content is compliant with Accessibility Checking. > > http://p.sf.net/sfu/ephox-dev2dev > > _______________________________________________ Gambas-user mailing list > > Gambas-user@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/gambas-user > > > > ------------------------------------------------------------------------------ > EditLive Enterprise is the world's most technically advanced content > authoring tool. Experience the power of Track Changes, Inline Image > Editing and ensure content is compliant with Accessibility Checking. > http://p.sf.net/sfu/ephox-dev2dev > _______________________________________________ > Gambas-user mailing list > Gambas-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/gambas-user ------------------------------------------------------------------------------ EditLive Enterprise is the world's most technically advanced content authoring tool. Experience the power of Track Changes, Inline Image Editing and ensure content is compliant with Accessibility Checking. http://p.sf.net/sfu/ephox-dev2dev _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user