如何调用从web服务返回数组的函数

本文关键字:返回 服务 数组 函数 web 何调用 调用 | 更新日期: 2023-09-27 17:50:55

我是c#的新手,我正在使用nuSOAP和PHP。我在web服务中编写了一个返回数组的函数。问题是,我不知道如何从客户端获得该数组。以下是我的web服务中的相关代码:

function GetSection(bool $wcoloumn,string $coloumn, bool $all){
    if($wcoloumn== true && $all==false){
    $SQL = "SELECT `$coloumn` FROM _sections";
    $result = mysql_query($SQL);
    $dataCOL = array();
    $index = 0;
    $num = mysql_num_rows($results);
        while($row = mysql_fetch_assoc($result)) // loop to give you the data in an associative array so you can use it however.
        {
            if ($num > 0) {
            // You have $row['ID'], $row['Category'], $row['Summary'], $row['Text']
            $dataCOL[$index] = $row['$coloumn'];
            $index++;
            }
        }
        return $dataCOL();
    }
    }

这是一个返回数组[ $dataCOL(); ]的函数。

还要注意,我已经添加了自己的复杂类型(数组):

$server->wsdl->addComplexType("ArrayOfString",                      
                 "complexType",
                 "array",
                 "",
                 "SOAP-ENC:Array",
                 array(),
                 array(array("ref"=>"SOAP-ENC:arrayType","wsdl:arrayType"=>"xsd:string[]")),
                 "xsd:string");

我还注册了这个函数:

$server->register('GetSection', array('wcoloumn' => 'xsd:boolean', '$coloumn' => 'xsd:string', 'all' => 'xsd:boolean'), array('result' => 'tns:ArrayOfString'));

客户端代码是用c#编写的,目前看起来像这样:

public static userdatawsdl webs = new userdatawsdl();
public String[] arrSections = webs.GetSection(true, "id", false);
public String[] GetAppSections(bool wcoloumn,string coloumn)
{
   return arrSections[]; // Here I get syntax error :D
}

我得到的错误只在客户端:

语法错误;值预期

这里可能有什么问题?

如何调用从web服务返回数组的函数

您的问题是将数组转换为字符串数组,尝试使用Linq

public String[] GetAppSections(bool wcoloumn,string coloumn)
{
string[] foo = webs.GetSection(true, "id", false).OfType<object>().Select(o => o.ToString()).ToArray();
return foo
}