0

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 では、この配列はリストとして渡されますが、int ではなく Double が含まれています。

次に、次のエラーが表示されます。

java.lang.ClassCastException : java.lang.Double cannot be cast to java.lang.Integer

整数を double に変更するのはなぜですか?

4

1 に答える 1

1

AMF0には Double のみがあります。したがって、タイプを に変更する必要がありますDouble

AMF3 を使用すると、整数サポートを取得できます。

    $client = new SabreAMF_Client('https://xxx');
    $client->setEncoding(SabreAMF_Const::AMF3);
    return $client->sendRequest($service.'.'.$method,$params);
于 2013-02-06T13:13:40.030 に答える