[PHP/SOAP] een SOAP call maken met een array

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 22:22

HenkS

Da_king alias HenkS

Topicstarter
Hallo,

Wij hebben een XMPIE server (omgeving om gepersonaliseerd drukwerk te genereren) en deze kun je ook met API's/SOAP benaderen.

Met de API-SDK en heel wat gegoogle lukt me dit al aardig (ben niet echt een programmeur, maar vind het wel leuk om te doen).

Nu kan ik de server al goed aanroepen en dit wordt ook goed verwerkt. Echter ben ik nu op een functie gestuit waarbij ik gegevens in een array dien door te geven en dit lukt me simpelweg niet.

Het WDSL schema wat hierbij hoort:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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>
    <SetOutputInfo xmlns="XMPieWSAPI">
      <inUsername>string</inUsername>
      <inPassword>string</inPassword>
      <inTicketID>string</inTicketID>
      <inType>string</inType>
      <inMedia>int</inMedia>
      <inFolder>string</inFolder>
      <inFileName>string</inFileName>
      <inParams>
        <Parameter>
          <m_Name>string</m_Name>
          <m_Value>string</m_Value>
        </Parameter>
        <Parameter>
          <m_Name>string</m_Name>
          <m_Value>string</m_Value>
        </Parameter>
      </inParams>
    </SetOutputInfo>
  </soap12:Body>
</soap12:Envelope>


Hoe roep ik dit nu aan:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Cla_XMPie_JobTicket_SetOutputInfo{
        public $inUsername;
        public $inPassword;
        public $inTicketID;
        public $inType;
        public $inMedia;
        public $inFolder;
        public $inFileName;
        public $inParams = array();
}

$my_XMPie_JobTicket_SetOutputInfo = new Cla_XMPie_JobTicket_SetOutputInfo;
$my_XMPie_JobTicket_SetOutputInfo -> inUsername = $My_uProduce_Credentials;
$my_XMPie_JobTicket_SetOutputInfo -> inPassword = UPRODUCE_PASSWORD;
$my_XMPie_JobTicket_SetOutputInfo -> inTicketID = $JobTicket_ID;
$my_XMPie_JobTicket_SetOutputInfo -> inType = "PDFO" ;  // PDF Optimized
$my_XMPie_JobTicket_SetOutputInfo -> inMedia = 1;   // Print
$my_XMPie_JobTicket_SetOutputInfo -> inFolder = "";
$my_XMPie_JobTicket_SetOutputInfo -> inFileName = "SpongeBobtest with XMPIE API";
$my_XMPie_JobTicket_SetOutputInfo -> inParams[] = null;
$Obj_JobTicket_SetOutputInfo_OK = $My_SoapClient_JobTicket -> SetOutputInfo($my_XMPie_JobTicket_SetOutputInfo);
echo "The SetOutputInfo method returned <b>" . $Obj_JobTicket_SetOutputInfo_OK -> SetOutputInfoResult . "</b><br>";


Zo gaat het goed! echter wil ik nu die inParams[] vullen en dit doe ik dan zo:
code:
1
2
3
4
5
6
7
8
9
10
$test = array(
       'Parameter' => array(
        array('m_Name' => 'FONTS_POLICY', 'm_Value' => '2'), 
        array('m_Name' => 'ASSETS_POLICY', 'm_Value' => '1'),
      ));

en vervolgens vervang ik:
$my_XMPie_JobTicket_SetOutputInfo -> inParams[] = null;
door:
$my_XMPie_JobTicket_SetOutputInfo -> inParams[] = $test;


Echter doet hij niks met de array, ik krijg geen error melding terug, maar hij doet er ook niks mee. geef ik de array fout door?

Acties:
  • 0 Henk 'm!

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
- Gebruik je de standaard SOAP library van PHP of iets dergelijks als NuSOAP?
- Een gewone call zonder die Array lukt dus wel?

Wrs komt het doordat een soap array iets anders is dan een php array. Zou je de hele soap request kunnen posten?

edit: btw mooie benamingen voor je variabelen :>

[ Voor 18% gewijzigd door flashin op 22-02-2010 10:53 ]


Acties:
  • 0 Henk 'm!

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 22:22

HenkS

Da_king alias HenkS

Topicstarter
flashin schreef op maandag 22 februari 2010 @ 10:51:
- Gebruik je de standaard SOAP library van PHP of iets dergelijks als NuSOAP?
- Een gewone call zonder die Array lukt dus wel?

Wrs komt het doordat een soap array iets anders is dan een php array. Zou je de hele soap request kunnen posten?

edit: btw mooie benamingen voor je variabelen :>
haha tja ik ben nogal zoekende.... probeer ook echt te werken vanuit een paar werkende voorbeelden. ik roep de SOAP zo aan:
code:
1
2
3
4
5
$My_SoapClient_JobTicket = new SoapClient($My_XMPie_URL1 . "JobTicket" . UPRODUCE_API_URL2,
        array(
            "trace" => 1,
            "exceptions" => 1
    ));


misschien stom, maar dan is het toch de gewone PHP Soap client?

de call zonder array werkt wel, dan krijg ik netjes als respons '1' en dat is dus goed.
Echter met array gaat de call ook goed, krijg ik ook response '1' echter wordt er niks met de arraywaardes gedaan (geen 1 wordt er gebruikt), en hoe ik de array ook opbouw, ik krijg geen foutmelding, alleen heb ik het idee dat ik het helemaal fout aanroep

Acties:
  • 0 Henk 'm!

  • Ssander
  • Registratie: December 2009
  • Laatst online: 12-06-2023
Er is een verschil met someArray[] = blaat; en someArray = blaat. Bekijk het volgende voorbeeld;

PHP:
1
2
3
4
5
$myArray[] = 'Hello';
$myArray[] = 'World';

// $myArray[0] is nu 'Hello'
// $myArray[1] is nu 'World'


Wanneer je nu het volgende doet;

PHP:
1
2
3
$myArray[] = array('Foo' => 'Bar');

// niet $myArray krijgt nu de gegeven array als waarde, maar $myArray[2]


Kortom, in jouw code wil je dit...

PHP:
1
$my_XMPie_JobTicket_SetOutputInfo -> inParams[] = $test;


... vervangen door;

PHP:
1
$my_XMPie_JobTicket_SetOutputInfo -> inParams = $test;

Acties:
  • 0 Henk 'm!

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 22:22

HenkS

Da_king alias HenkS

Topicstarter
Ssander schreef op maandag 22 februari 2010 @ 11:03:
.....
Wanneer je nu het volgende doet;

[code=php]

Kortom, in jouw code wil je dit...

PHP:
1
$my_XMPie_JobTicket_SetOutputInfo -> inParams[] = $test;


... vervangen door;

PHP:
1
$my_XMPie_JobTicket_SetOutputInfo -> inParams = $test;
Top, dit was inderdaad de fout, nu werkt het perfect, nu kan ik gepersonaliseerde Spongebobs maken _/-\o_