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

Posted

技术标签:

【中文标题】如何调用从 Web 服务返回数组的函数?【英文标题】:How to call a function that returns an array from a webservice? 【发布时间】:2012-12-19 19:24:46 【问题描述】:

我是 C# 新手,我正在使用 nuSOAP 和 php。我在一个返回数组的 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

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

语法错误;期望值

这可能是什么问题?

【问题讨论】:

arrSections 是如何填充的? public String[] arrSections = webs.GetSection(true, "id", false); 这可能是问题 ok in c# try console.writeLine(webs.GetSection(true, "id", false).toString()) 看看它返回什么,然后在你的php中添加一个mail("you@yourremail .com", "Test", print_r($dataCOL, true)) 在return语句之前并发布结果 在你上面的 C# 代码中有很多基本的语法错误。请发布整个代码,而不仅仅是部分代码。 Neo 解决了它。无论如何,谢谢。 【参考方案1】:

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

public String[] GetAppSections(bool wcoloumn,string coloumn)

string[] foo = webs.GetSection(true, "id", false).OfType<object>().Select(o => o.ToString()).ToArray();
return foo

【讨论】:

以上是关于如何调用从 Web 服务返回数组的函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中返回从 MySQL 获取的数组

如何从反应js中的函数返回数组

Python ctypes:如何调用应该返回字符串数组的函数?

PHP如何调用JS函数并获取其返回的数据?

如何将数组从 c++ 传递给 python 函数并将 python 返回的数组检索到 c++

如何访问函数返回数组的元素?