[SOAP] Re: DIME to a VB6 client using PEAR::SOAP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



"Op" <o@peek.org.uk> wrote in message
20030911021533.1860.qmail@pb1.pair.com">news:20030911021533.1860.qmail@pb1.pair.com...
> Can you one help?? I am trying to get a Visual Basic 6 MSSOAP 3.0 client
to
> make a simple call and receive a DIME attachment from PEAR::SOAP 8.0 RC1.
> It's been days now and I still can't get the dam thing to work.I have
> written a client in php and that works fine. Has anyone managed to get
> anything like this to work?? I have basic data types between VB & PHP
> working fine. but I am stuck on this one.
>
> Any bits of code, pointers or just conformation that someone has made it
> work would be great
>
> PEAR::SOAP is great , but all the better if I can get this to work.
>
> Thanks in advance
>
> OP.

TO get a PEAR::SOAP 8.0 RC1 server to return a DIME attachment to visual
basic 6 using the MSSOAP 3.0

first off you need to copy the funtion function _decodeDIMEMessage from
Base.php to the HTTP.php

You need to edit the SOAP library file Value.php edit the function
SOAP_Attachment

 $this->attributes['href'] = 'cid:'.$cid;

and replace with

 $this->attributes['href'] = ''.$cid;


For some reason the MSSOAP implementation has a problem with "cid:"; in the
returned href.
I assume that this will break any other implementation of soap from working
, but hey,
it's micros**t trying to do their own thing again.


Here is my code for the VB client: It uses lowlevel access, so no wsdl file
required (I think)

'---------------------------------------------------------------------------

Dim Serializer As SoapSerializer30
Dim Reader As SoapReader30
Dim ResultElm As IXMLDOMElement
Dim FaultElm As IXMLDOMElement
Dim Connector As SoapConnector30
Dim Composer As DimeComposer30
Dim Parser As DimeParser30

Set Connector = New HttpConnector30
Set Serializer = New SoapSerializer30
Set Composer = New DimeComposer30
Set Reader = New SoapReader30
Set Parser = New DimeParser30


Connector.Property("EndPointURL") =
"http://myserver.com:8080/soap/init_server.php?wsdl";
Connector.Property("SoapAction") =
"urn:init_Server#Example_server#echoMimeAttachment"
Connector.Connect
Connector.BeginMessage
Set Composer = CreateObject("MSSOAP.DimeComposer30")
Serializer.InitWithComposer Connector.InputStream, Composer
Serializer.StartEnvelope
Serializer.StartBody
Serializer.StartElement "echoMimeAttachment", "urn:init_Server"
Serializer.StartElement "inputStruct", CALC_NS
Serializer.WriteString "FromServer"
Serializer.EndElement
Serializer.EndElement
Serializer.EndBody
Serializer.EndEnvelope
Serializer.Finished
res = Reader.LoadWithParser(Connector.OutputStream, Parser)
Execute = Reader.RpcResult.Text
Set Node = Reader.RpcParameter("return")
Set Attachment = Reader.GetReferencedAttachment(Node)
FileName = "c:\FromServer.blob"
Attachment.SaveToFile FileName, "True"

'---------------------------------------------------------------------------
----



The php server was just a simple.

function echoMimeAttachment($stuff)
    {
 return new
SOAP_Attachment('return',"application/octet-stream","/path/to/file.blob");
    }


I think that was it.
Good luck.

OP

-- 
PHP Soap Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [PHP Users]     [Kernel Newbies]     [PHP Database]     [Yosemite]

  Powered by Linux