Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Passing and array to an API
Message
From
09/05/2011 15:12:26
 
 
To
09/05/2011 15:06:20
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:
01510091
Views:
52
Thank you, I should have mentioned I tried COMARRAY() and actually get a different error (but the same no matter the setting)
Error: 11 - Function argument value, type, or count is invalid
That leads me to believe I'm better off without COMARRAY(). I just have next to no experience with Arrays, no matter that language and all of the array($whatever => 'this stuff') is confusing me.

>Without knowing anything about the web service you are addressing, just be aware that if the backend is looking for a zero based array you need to call vfp's COMARRAY(object, 0) before passing the array so it is sent zero based. ( where object is the instantiated instance of the service )
>
>
>>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