[ dinke @ 06.09.2004. 14:22 ] @
Imam wsdl based Java SOAP server, i pokušavam da pozovem soap metod iz php klijenta koji ima arrayList kao jedan od argumenata. Ostali metodi rade normalno, ali prilikom poziva tog metoda, prateći soap request vidim da nusoap ne šalje ništa za arrayList_2 unutar tog poziva, kao na primer: Code: <SOAP-ENV:Body><tns:loadStabloGaTipFilt xmlns:tns="urn:Navigator"><int_1 xsi:type="xsd:int">1</int_1><ArrayList_2 xsi:type="ns2:arrayList"></ArrayList_2></tns:loadStabloGaTipFilt></SOAP-ENV:Body> tako da dobijam poruku o grešci: JAXRPC.TIE.01: caught exception while handling request: malformed array type: <arrayType attribute missing> Verzija NUSOAP-a je 0.6.8 (1.76) Evo koda koji sam koristio: Code: <?php require_once("nusoap.php"); //nova sesija kako bi pokupio JSESSIONID zbog java sesije session_start(); $client = new soapclient("http://localhost:15000/b04/navigator?WSDL",true); $proxy = $client->getProxy(); $response = $proxy->loadKorisnik("user","pass"); $header_array = explode("\n",$proxy->response); foreach($header_array as $line) { if(strstr($line,"Set-Cookie")) { $java_session_id = substr($line,23,32); $_SESSION["JSESSIONID"] = $java_session_id; } } //ovo sam pokupio sa jednog drugog threada //zati sto prvobitni pokusaj sa jednostavnim //nizom $arraylist nije radio $arraylist = new soapval("arrayList_2","arrayList",array("1"),false, "http://java.sun.com/jax-rpc-ri/internal", array("SOAP-ENC:arrayType" => "xsd:anyType[2]")); $result = $proxy->loadStabloGaTipFilt(1,$arraylist); /* takodje sam probao i ovo, ali bez rezultata $params = array("int_1"=>"1", "arrayList_2" => new soapval("arrayList_2","arrayList",array("1"=>"1"),false, "http://java.sun.com/jax-rpc-ri/internal", array("SOAP-ENC:arrayType" => "xsd:anyType[2]"))); $result = $client->call("loadStabloGaTipFilt",$params);*/ // Display the request and response echo "<h2>Request</h2>"; echo "" . htmlspecialchars($proxy->request, ENT_QUOTES) . ""; echo "<h2>Response</h2>"; echo "" . htmlspecialchars($proxy->response, ENT_QUOTES) . ""; ?> Evo opisa arrayList tipa u wsdl fajlu: Code: <schema targetNamespace="http://java.sun.com/jax-rpc-ri/internal"> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> <import namespace="urn:Navigator"/> <complexType name="arrayList"> <complexContent> <extension base="tns:list"> <sequence/> </extension> </complexContent> </complexType> <complexType name="list"> <complexContent> <extension base="tns:collection"> <sequence/> </extension> </complexContent> </complexType> <complexType name="collection"> <complexContent> <restriction base="soap11-enc:Array"> <attribute ref="soap11-enc:arrayType" wsdl:arrayType="anyType[]"/> </restriction> </complexContent> </complexType> </schema> i opisa metoda koji se poziva: Code: <message name="NavigatorIF_loadStabloGaTipFilt"> <part name="int_1" type="xsd:int"/> <part name="ArrayList_2" type="ns2:arrayList"/> </message> Da li postoji neko na ovom forumu koji bi imao ideju kako ovo rešiti ? Hvala na pomoći |