无法转换为整数

Chr*_*ett 0 java xml-rpc

我正在编写一个java程序,我希望使用xmlrpc模拟与远程过程调用的客户端 - 服务器关系.

但是,当我尝试远程调用该方法时,我收到此错误消息:

'JavaClient:XML-RPC Consumer Fault#java.lang.ClassCastException:java.lang.String无法强制转换为java.lang.Integer'

这是产生错误的客户端方法:

public String getHashsize() {

      // Execute the remote call, using the handler
         try
     {
         argHashsize = new Vector(); //see next method for comments
         argHashsize.addElement(serverURL);

         // make the call
         String callit = ("GetSize.sendHashSize");
         sizeHash =  (Integer)client.execute(callit, argHashsize );
     }
         // Use XmlRpcException errors
         catch (XmlRpcException exception) {
             System.err.println("JavaClient: XML-RPC Consumer Fault #" +
                                Integer.toString(exception.code) + ": " +
                                exception.getCause() + "" + exception.toString());
         } catch (Exception exception) {
             System.err.println("JavaClient: XML-RPC Consumer Fault #" + exception.toString());
         }
      String StrsizeHash = Integer.toString(sizeHash); // Cast sizeHash to String
     return StrsizeHash;
     }
Run Code Online (Sandbox Code Playgroud)

这是我试图调用的方法:

public String sendHashSize(String getCaller) {
        // send back info to Message Broker
        sendbackserverdata = "number of staff: " + theHashtable.noStaff()
                + "  Caller: " + getCaller
                + "  Port: " + getServerPort()
                + "  " + getSendtime();
        //Store server info in Hashtable persist - could be a database
    /*persist.put("" + theHashtable.noStaff(),"" + sendbackserverdata);
         sendServerData = sendbackserverdata;
         stats.StoreinStatsHashtable("" + theHashtable.noStaff(), sendbackserverdata);*/
        return sendbackserverdata; // return to Consumer
    }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

你的sendHashSize方法返回一个String.它甚至不是整数的字符串表示 - 它是以"人员数量:"开头的字符串.

我并不感到惊讶,因为它没有例外 - 你只是意外地预计它会起作用.结果会得到哪个整数?

更改sendHashSize为返回int/ Integer(可能是theHashtable.noStaff()?),或者避免尝试将其强制转换Integer为调用方.

此外,此代码具有误导性:

catch (Exception exception) {
    System.err.println("JavaClient: XML-RPC Consumer Fault #" + exception.toString());
}
Run Code Online (Sandbox Code Playgroud)

不是 "XML-RPC消费者错误" - 您已经捕获了前一行中的那些错误.你有一个例外,因为你试图把一个String转换为Integer......这与XML-RPC层没有任何关系.