C# 如何使用.net中返回多维数组的php Web服务

C# 如何使用.net中返回多维数组的php Web服务,c#,php,.net,web-services,nusoap,C#,Php,.net,Web Services,Nusoap,我用php创建了一个web服务,它以多维数组的形式返回数据,但问题是如何在.net中使用它。 我知道使用以一维数组返回数据的web服务,但不知道多维数组,我已经包含了下面的代码,请帮助我 服务器端php文件 <?php require_once('lib/nusoap.php'); $server = new soap_server(); $server->configureWSDL('servCarRent', 'urn:servCarRent'); $server->w

我用php创建了一个web服务,它以多维数组的形式返回数据,但问题是如何在.net中使用它。 我知道使用以一维数组返回数据的web服务,但不知道多维数组,我已经包含了下面的代码,请帮助我

服务器端php文件

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

$server = new soap_server();
$server->configureWSDL('servCarRent', 'urn:servCarRent');

$server->wsdl->addComplexType('getAllKeyData','complexType','array','all','',
 array(
    'KeyId'=> array('name'=>'KeyId', 'type' =>'xsd:int'),
    'KeyName'=> array('name'=>'KeyName', 'type' =>'xsd:string'),
    'IsAvailable'=> array('name'=>'IsAvailable', 'type' =>'xsd:int'),
    'NoOfKeys'=> array('name'=>'NoOfKeys', 'type' =>'xsd:int')
    )
);

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

$server->register(
    'getAllKeys',
    array(),
    array('return'=>'tns:MySoapObjectArray'),
    $ns,
    false,
    'rpc',
    false,
    'Processes an array of MySoapObjects and returns one of them');


function getAllKeys()
{
    $con=mysql_connect('localhost','root','pass')or die("cannot connect"); 

    mysql_select_db('mydb')or die("cannot select db");

    $sql = 'Select * from KeyTable';
    $result=mysql_query($sql,$con);
    $out=array();
    while($row = mysql_fetch_assoc($result))

    {
        $out[]=$row;
    }

    return $out;


}


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


exit();

?>
<?php
require_once('lib/nusoap.php');

$client = new nusoap_client('http://www.mydomainname.com/new/servCarRent.php?wsdl');

$err = $client->getError();
if ($err) {

    echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';

}
$response = $client->call('getAllKeys');

if($client->fault)
{
    echo '<h2>Fault</h2><pre>';
    echo '</pre>';
}
else
{
    $err = $client->getError();
    if ($err) {

        echo '<h2>Error</h2><pre>' . $err . '</pre>';
    }
    else
    {

echo '<h2>Result</h2><pre>';
        print_r($response);
    echo '</pre>';

}
}

?>
但我想在.net中访问它,我在.net项目中包含了web引用,并将其命名为webSerCarRent,我尝试了如下操作,但在XML文档中出现了错误

webSerCarRent.servCarRent scr=new-webSerCarRent.servCarRent();
webSerCarRent.getAllKeyData[]gakd=新的webSerCarRent.getAllKeyData[10];
gakd=scr.getAllKeys();
for(int i=0;i

请帮助我

朋友们,我得到了解决方案,现在工作正常。我刚刚在服务器端php文件中进行了更改,我在其中替换了

当在.net文件中访问它时,出现了一个错误,.net文件中的无错误代码如下

webSerCarRent.servCarRent scr=new-webSerCarRent.servCarRent();
webSerCarRent.getAllKeyData[]gakd=新的webSerCarRent.getAllKeyData[10];
for(int i=0;i
以及它的工作原理……:)

Result

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 20577369Y
            [2] => 1
            [3] => 2
        )

    [1] => Array
        (
            [0] => 2
            [1] => 63337921S
            [2] => 1
            [3] => 2
        )



)
 webSerCarRent.servCarRent scr = new webSerCarRent.servCarRent();
            webSerCarRent.getAllKeyData[] gakd = new webSerCarRent.getAllKeyData[10];

            gakd = scr.getAllKeys();
            for (int i = 0; i < gakd.Length; i++)
            {

                string kname = gakd[i].KeyName;
            }
$server->wsdl->addComplexType('getAllKeyData','complexType','array','all','',
 array(
    'KeyId'=> array('name'=>'KeyId', 'type' =>'xsd:int'),
    'KeyName'=> array('name'=>'KeyName', 'type' =>'xsd:string'),
    'IsAvailable'=> array('name'=>'IsAvailable', 'type' =>'xsd:int'),
    'NoOfKeys'=> array('name'=>'NoOfKeys', 'type' =>'xsd:int')
    )
);
$server->wsdl->addComplexType('getAllKeyData','complexType','struct','all','',
 array(
    'KeyId'=> array('name'=>'KeyId', 'type' =>'xsd:int'),
    'KeyName'=> array('name'=>'KeyName', 'type' =>'xsd:string'),
    'IsAvailable'=> array('name'=>'IsAvailable', 'type' =>'xsd:int'),
    'NoOfKeys'=> array('name'=>'NoOfKeys', 'type' =>'xsd:int')
    )
);
webSerCarRent.servCarRent scr = new webSerCarRent.servCarRent();
webSerCarRent.getAllKeyData[] gakd = new webSerCarRent.getAllKeyData[10];
for (int i = 0; i < gakd.Length; i++)
{ 
  gakd[i] = scr.getAllKeys()[i];
  int id = gakd[i].KeyId;
  string kname = gakd[i].KeyName;

}