Avatar billede vivaa.dk Nybegynder
23. oktober 2007 - 00:11 Der er 1 kommentar og
1 løsning

Retunering af array fra SOAP server

Hej

Jeg har følgene SOAP server:

<?php
require('../lib/nusoap.php');

$server = new soap_server();

function getBruger($id) {

    mysql_connect('localhost','root','');
    mysql_select_db('test');
    $query = "SELECT brugernavn FROM cmr_users "
          . "WHERE brugerid = '$id'";
    $result = mysql_query($query);

    $row = mysql_fetch_assoc($result);
    return $row['brugernavn'];
}

function getBrugere($something) {
    mysql_connect('localhost','root','');
    mysql_select_db('test');
    $query = "SELECT brugernavn FROM cmr_users'";
    $result = mysql_query($query); 

    $brugernavnArr = array();

    while ($row = mysql_fetch_assoc($result)) {
        $brugernavnArr[] = $row['brugernavn'];
    }

    return $brugernavnArr;
}

$server->configureWSDL('cmrServer', 'urn:bruger');

$server->register("getBruger",
                array('id' => 'xsd:int'),
                array('return' => 'xsd:string'),
                'urn:bruger',
                'urn:bruger#getBruger');
           
$server->wsdl->addComplexType(
    'DataList',
    'complexType',
    'struct',
    'all',
    '',
    array(
        'brugernavn' => array('name' => 'brugernavn', 'type' => 'xsd:string')
    )

);


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

$server->register("getBrugere",
    // input params
    array(
        'someInput'    => 'xsd:boolean'
        ),
    // returns
    array('return'    => 'tns:DataListRs'),
    'urn:bruger',
    'urn:bruger#getBrugere',
    'rpc',
    'encoded',
    'Returns a list of data'
    );
               
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA)
                      ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?>

Hvis jeg kalder getBrugere fra mit c# program får jeg følgene exception:

unable to serialize result

I kan se mit XML udkast her:

http://ole.vivaa.dk/soap/test/index.php?wsdl

Nogen der ved hvad jeg gør galt?


Går ud fra det må være i PHP delen den er gal..
Avatar billede vivaa.dk Nybegynder
23. oktober 2007 - 09:37 #1
Nå fik den klaret selv..

Dataene kom forkert ind når jeg kalder i SQL.. De skulle smides ind i et array, der angiver hvad der er brugernavn, som vist her:

function getBrugere($something) {
    mysql_connect('localhost','root','');
    mysql_select_db('test');
    $query = "SELECT brugernavn, brugerid FROM cmr_users";
    $result = mysql_query($query);

    $brugernavnArr = array();

    while ($row = mysql_fetch_assoc($result)) {
        $brugernavnArr[] = array('brugernavn' => $row['brugernavn'], 'brugerid' => $row['brugerid']);
    }

    return $brugernavnArr;
}
Avatar billede nielle Nybegynder
23. oktober 2007 - 18:29 #2
Det er jo et associativt array. Det burde vel også være muligt at returnere som et helt almindeligt "lowtech" array?!

Nå, men det vigtigste er joa t det virker. :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester