我试图通过SOAP将我的(MySQL)数据库的值返回给C#客户端。PHP SOAP向客户端返回错误的值
服务器用PHP编写的,我认为这是这里的一切不顺心:
class foo{
function bar()
{
$result = $connection->query("SELECT value
FROM table
WHERE id='$id'");
$row = $result->fetch_assoc();
return (int)$row['value'];
}
}
将在C#转起来为0,不管什么样的价值是在数据库中。然而,
class foo{
function bar()
{
return 5;
}
}
变成了如C#中的正确的值(5在这种情况下)。
缺少什么我在这里?看起来,数据库中的数据不会正确返回到C#,但在PHP中写入相同值(静态)的任何其他方式都会成功。
编辑: 我现在已经建立了一个PHP SOAP客户端,它接受与C#相同的值。因此,似乎问题出现在PHP SOAP服务器上,将错误的值传递给客户端(只要返回的值不是静态的)。编辑: 我现在已经找到了我的问题的解决方案;我的WSDL文件有一个复杂的请求类型,即使它只需要一个简单的类型。将此复杂类型更改为简单类型,解决了问题。不要问我为什么 - 它对我毫无意义!
从'bar'返回之前,您可以在PHP中记录值吗?如果你从非c#客户端调用'bar',会发生什么? – 2011-05-14 17:44:16
@Albin Sunnanbo当从另一个PHP脚本(而不是SOAP)调用bar时,该值显示正确。 我还没有尝试其他类型的SOAP客户端,而不是C#之一。 – 2011-05-14 17:46:48
我会看看VS.NET生成的代理类。我不明白PHP如何告诉SOAP消费者返回类型是“int”。是否有一些PHP函数的元描述? – 2011-05-14 17:47:22