Re: SOAP Client access to Web service problem
Ferhat Ayaz <[email protected]> Thu, 13 May 2004 20:19:07 +0200
| Newsgroups | gmane.comp.windows.devel.soap.general |
|---|---|
| Organization | Homeoffice |
| Message-ID | <1084472347.1029.0.camel@debian> |
Try csoap
http://csoap.sourceforge.net
On Thu, 2004-05-13 at 18:05, Muralidhar Bojja wrote:
> Hi,
>
> I would like to map the following Java code to C++.
> I made an attempt to succeed with MS SOAP Toolkit 2.0, but I could not find
> where is the mistake.
>
> It does not matter to me, whether the solution uses SOAP message or not(just
> uses stream). I just want to work with the web service with the given
> parameters.
>
> For instance, the below given java code just works fine without any soap
> message, rather with a stream.
>
>
> Any solutions or suggestions are appreciated.
>
> ----------- Java Code --------------
> import java.net.*;
> import java.io.*;
>
> public class CrakFrame {
> public static void main(String arg[]) {
> try {
> URL url = new URL("xyz");
> URLConnection connection = url.openConnection();
> connection.setDoOutput(true);
> PrintWriter out = new
> PrintWriter(connection.getOutputStream());
> out.print("Petition");
> out.print("=");
>
> out.print("<AvailableColours><Colour>Red</Colour></AvailableColours>");
> out.close();
> BufferedReader in = new BufferedReader(new
> InputStreamReader(connection.getInputStream()));
> boolean more = true;
> while(more) {
> String line = in.readLine();
> if(line == null) more = false;
> else System.out.println(line);
> }
> }catch (IOException e) {e.printStackTrace();}
> }
> }
>
>
> ----------- Visual C++ code ------------------
>
> #include <stdio.h>
> #include <fstream.h>
> #include <stdlib.h> // for exit()
>
> #import "msxml3.dll"
> using namespace MSXML2;
>
> #import "D:\Program Files\Common Files\MSSoap\Binaries\MSSOAP1.dll" \
> exclude("IStream", "ISequentialStream", "_LARGE_INTEGER", \
> "_ULARGE_INTEGER", "tagSTATSTG", "_FILETIME")
> using namespace MSSOAPLib;
>
> int main (void)
> {
>
> CoInitialize(NULL);
>
> ISoapSerializerPtr Serializer;
> ISoapReaderPtr Reader;
> ISoapConnectorPtr Connector;
>
> // Connect to the service
> Connector.CreateInstance(__uuidof(HttpConnector));
> Connector->Property["EndPointURL"] =
> "http://213.170.46.114:8004/Service1.asmx?op=FurnitureDB";
> Connector->Connect();
>
> // Begin message
> Connector->Property["SoapAction"] = "http://www.indra.es/FurnitureDB";
> Connector->BeginMessage();
>
> // Create the SoapSerializer
> Serializer.CreateInstance(__uuidof(SoapSerializer));
>
> // Connect the serializer to the input stream of the connector
> Serializer->Init(_variant_t((IUnknown*)Connector->InputStream));
>
> // Build the SOAP Message
> Serializer->startEnvelope("SOAP","","");
> Serializer->startBody("");
>
>
> Serializer->startElement("Petition","http://www.indra.es/FurnitureDB","","");
> Serializer->startElement("AvailableColours","","","");
> Serializer->startElement("Colour","","","");
>
> Serializer->writeString("Red");
>
> Serializer->endElement();
> Serializer->endElement();
> Serializer->endElement();
>
> Serializer->endBody();
> Serializer->endEnvelope();
>
> // Send the message to the web service
> Connector->EndMessage();
>
> // Let us read the response
> Reader.CreateInstance(__uuidof(SoapReader));
>
> // Connect the reader to the output stream of the connector
> Reader->Load(_variant_t((IUnknown*)Connector->OutputStream), "");
>
> // Display the result
> printf("Answer: %s\n", (const char *)Reader->RPCResult->text);
>
> // Close the Service
> CoUninitialize();
>
> return 0;
> }
>
>
>
> --
> Bojja