SabreAMF:PHP整数数组到Java整数列表

时间:2013-02-06 12:29:22

标签: java php

我正在使用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?

1 个答案:

答案 0 :(得分:1)

AMF0中只有双打。因此,您需要将类型更改为Double

如果您使用AMF3,则可以获得整数支持:

    $client = new SabreAMF_Client('https://xxx');
    $client->setEncoding(SabreAMF_Const::AMF3);
    return $client->sendRequest($service.'.'.$method,$params);