我正在使用SabreAMF来调用Java Web服务。
这是Java函数:
@RemotingInclude
public Boolean testAMF(List<Integer> ints)
{
for (Integer element : ints)
{
//do something
}
return true;
}
请注意,此函数接受整数列表。
这是PHP代码:
<?php
require 'SabreAMF/Client.php';
function make_request($service, $method, $params)
{
$client = new SabreAMF_Client('https://xxx');
return $client->sendRequest($service.'.'.$method,$params);
}
$ints = array(1,2);
$parameters = array($ints);
$result = make_request('chartManager','testAMF',$parameters);
var_dump($result);
?>
我传递一个包含2个整数的数组。 在Java中,这个数组以列表形式出现,但是包含双打,而不是整数。
然后我收到以下错误:
java.lang.ClassCastException : java.lang.Double cannot be cast to java.lang.Integer
为什么它将我的整数更改为double?
答案 0 :(得分:1)
AMF0中只有双打。因此,您需要将类型更改为Double
。
如果您使用AMF3,则可以获得整数支持:
$client = new SabreAMF_Client('https://xxx');
$client->setEncoding(SabreAMF_Const::AMF3);
return $client->sendRequest($service.'.'.$method,$params);