Notice Array to string conversion using nusoap

给你一囗甜甜゛ 提交于 2019-12-23 12:43:27

问题


I'm developing a web service in PHP, using nosoap. this is my file, webservice.php

<?php
require_once "nusoap/nusoap.php";

$namespace = "urn:mywsdl";
$server = new soap_server();
$server->configureWSDL('myWS', $namespace);
$server->wsdl->schemaTargetNamespace = $namespace;

$server->wsdl->addComplexType('datosBasicos', 'complexType', 'struct', 'all', '', array(
    'codigo' => array(
        'name' => 'codigo',
        'type' => 'xsd:string'
    ),
    'nombre' => array(
        'name' => 'nombre',
        'type' => 'xsd:string'
    )
));


$server->wsdl->addComplexType('arraydatosBasicos', 'complexType', 'array', '', 'SOAP-ENC:Array', array(), array(
    array('ref' => 'SOAP-ENC:arrayType',
        'wsdl:arrayType' => 'tns:datosBasicos[]')
        ), 'tns:datosBasicos'
);


$server->register('saludar', array('nombre' => 'xsd:string'), array('return' => 'tns:arraydatosBasicos'), $namespace);

function saludar($nombre) {
    $array[] = array('codigo' => '123', 'nombre' => 'test');
    $array[] = array('codigo' => '5745', 'nombre' => 'probando');
    $datos[] = $array[1];
    return $datos;
}

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?>

But, when I deploy the web service, with SOAPUI, I get this error:

<b>Notice</b>:  Array to string conversion in <b>C:\xampp\htdocs\nusoap\nusoap\nusoap.php</b> on line <b>6132</b><br />

What am I doing wrong?


回答1:


I got a similar error, I had to comment a line in nusoap.php..something like:

//$this->debug("$k = $v<br>");

and it was fine for me.

Obviously, it is only for debug so don't worry about the functionality, because it should be the same if you comment the line. I think when you create complex data (that's mean, in your case an array inside another array) nusoap is not able to print it for debugging.

Anyway good luck.




回答2:


I have the same problem. You can convert the data to string to keep the debug for further usage and remove the warning

Search for this code

foreach(curl_getinfo($this->ch) as $k => $v){
    $err .= "$k: $v<br>";
}
$this->debug($err);

And replace with this one

foreach(curl_getinfo($this->ch) as $k => $v){
    if(is_array($v)){
        $v = implode(" / ", $v);
    }
    $err .= "$k: $v<br>";
}
$this->debug($err);



回答3:


For latest nuSoap version, the below will solve your problem :

FIND the below code in nusoap.php

$this->debug("serializing array element: $k, $v of type: $typeDef[arrayType]"); 

in line 6132 or something around this no.

AND COMMENT IT

// $this->debug("serializing array element: $k, $v of type: $typeDef[arrayType]");

Since it just for debug purpose. so not to worry about any functionality issues.



来源:https://stackoverflow.com/questions/22482881/notice-array-to-string-conversion-using-nusoap

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!