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>
<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) . "";
?>
<?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>
<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>
<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