Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Passing and array to an API
Message
From
12/05/2011 14:31:37
 
 
To
09/05/2011 18:23:15
Joel Leach (Online)
Memorial Business Systems, Inc.
Tennessee, United States
General information
Forum:
Visual FoxPro
Category:
Web Services
Environment versions
Visual FoxPro:
VFP 9 SP2
OS:
Windows XP
Application:
Web Service
Miscellaneous
Thread ID:
01510086
Message ID:
01510490
Views:
61
Thank you that was helpful in where I am going wrong. Now to figure out how to do it right.

>I don't know PHP, but it looks like it embeds and array within an array. I'm not sure you can do that in Fox (anyone else know?), but I can tell you store picarray to oArray(1,2) does not do that. It only stores the first member of picarray in oArray(1,2).
>
>These PHP "arrays" look more like C structures or objects than arrays to me, because of the named members. I suppose that is a feature of the language, but by using it in the API, they may be locking out other clients, which kinda defeats the purpose of using SOAP in the first place.
>
>Rick Strahl has done a lot of work with web services and complex types. Google that and also check out his wwSOAP and his Web Service Proxy Generator. I don't know if they address this particular issue, but maybe they will help.
>
>>I am attempting to integrate my VFP P.O.S. with Magento an open source web cart. So far I have mee accessing the MySql database directly but I know the API functions should be quicker and safer. My current issue is with trying to translate the following example code :-S into something usable in VFP.
>>
>>$proxy = new SoapClient('http://magentohost/api/soap/?wsdl');
>>$sessionId = $proxy->login('apiUser', 'apiKey');
>>
>>$newImage = array(
>> 'file' => array(
>> 'name' => 'file_name',
>> 'content' => base64_encode(file_get_contents('product.jpg')),
>> 'mime' => 'image/jpeg'
>> ),
>> 'label' => 'Cool Image Through Soap',
>> 'position' => 2,
>> 'types' => array('small_image'),
>> 'exclude' => 0
>>);
>>
>>$imageFilename = $proxy->call($sessionId, 'product_media.create', array('Sku', $newImage));
>>
>>
>>var_dump($imageFilename);
>>
>>
>>My attempt
>>
>>
>>local cBitMap, cBitMap1
>>cBitMap1=FILETOSTR(STORE.cpicdir-"\product\"-alltrim(positems.mainimage))
>>cBitMap=STRCONV(cBitMap1,13)
>>
>>dimension picfile(3,2)AS ARRAY
>>store "name" to picfile(1,1)
>>store "aatestpicture.png" to picfile(1,2)
>>store "content" to picfile(2,1)
>>store cBitMap to picfile(2,2)
>>store "mime" to picfile(3,1)
>>store "image/png" to picfile(3,2)
>>
>>dimension typefile(1)
>>store "small_image" to typefile
>>
>>dimension picarray(5,2)AS ARRAY
>>store "file" to picarray(1,1)
>>store picfile to picarray(1,2)
>>store "label" to picarray(2,1)
>>store "this is my test image" to picarray(2,2)
>>store "position" to picarray(3,1)
>>store 2 to picarray(3,2)
>>store "types" to picarray(4,1)
>>store typefile to picarray(4,2)
>>store "exclude" to picarray(5,1)
>>store 0 to picarray(5,2)
>>
>>dimension oArray(1,2) AS ARRAY
>>store positems.cupcnumber to oArray(1,1)
>>store picarray to oArray(1,2)
>>
>>
>>LOCAL loMage_Api_Model_Server_HandlerPort AS "XML Web Service"
>>* LOCAL loMage_Api_Model_Server_HandlerPort AS "MSSOAP.SoapClient30"
>>* Do not remove or alter following line. It is used to support IntelliSense for your XML Web service.
>>*__VFPWSDef__: loMage_Api_Model_Server_HandlerPort = http://www.fantasyfestival.com/api/soap/?wsdl , MagentoService , Mage_Api_Model_Server_HandlerPort
>>LOCAL loException, lcErrorMsg, loWSHandler
>>TRY
>>	loWSHandler = NEWOBJECT("WSHandler",IIF(VERSION(2)=0,"",HOME()+"FFC\")+"_ws3client.vcx")
>>	loMage_Api_Model_Server_HandlerPort = loWSHandler.SetupClient("http://www.fantasyfestival.com/api/soap/?wsdl", "MagentoService", "Mage_Api_Model_Server_HandlerPort")
>>* Call your XML Web service here.  ex: leResult = loMage_Api_Model_Server_HandlerPort.SomeMethod()
>>	sessionid = loMage_Api_Model_Server_HandlerPort.login("fanfest", "sk1ppy")
>>	leResult2 = loMage_Api_Model_Server_HandlerPort.CALL(sessionid, "product_media.create", oArray)
>>
>>CATCH TO loException
>>	lcErrorMsg="Error: "+TRANSFORM(loException.ERRORNO)+" - "+loException.MESSAGE
>>	DO CASE
>>	CASE VARTYPE(loMage_Api_Model_Server_HandlerPort)#"O"
>>* Handle SOAP error connecting to web service
>>	CASE !EMPTY(loMage_Api_Model_Server_HandlerPort.FaultCode)
>>* Handle SOAP error calling method
>>		lcErrorMsg=lcErrorMsg+CHR(13)+loMage_Api_Model_Server_HandlerPort.DETAIL
>>	OTHERWISE
>>* Handle other error
>>	ENDCASE
>>* Use for debugging purposes
>>	MESSAGEBOX(lcErrorMsg)
>>FINALLY
>>ENDTRY
>>
>>
>>It logs in just fine the I get the error box with "Error: 1429 - OLE IDispatch exception code 0 from ? : image is not specified.."
>>All help would be greatly appreciated. :-U
Previous
Reply
Map
View

Click here to load this message in the networking platform