«метод неприменим для аргументов» при создании приложения BlackBerry

#web-services #blackberry #java-me

#веб-службы #blackberry #java-me

Вопрос:

Я разрабатываю образец приложения для вызова.Сетевые веб-службы. Я добавил ksoap2-j2me-core-prev-2.1.2.jar к пути сборки в Eclipse.

Я передаю два значения через addProperty: «number1» и 10 как целое число, а также «number2» и 20. Это вызывает ошибку компилятора:

Метод addProperty(String, Object) в типе SoapObject неприменим для аргументов (String, int)

Как я могу устранить ошибку и как я могу передать одну строку и одно значение int в addProperty? Я сделал это таким же образом в Android, и там все работает нормально.

     String serviceUrl = "URL to webservice";
    String serviceNameSpace = "namespace of web service";
    String soapAction = "URL to method name";
    String methodName = "Name of method";
    SoapObject rpc = new SoapObject(serviceNameSpace, methodName);

    //compiler error here
    rpc.addProperty("number1", 10);
    rpc.addProperty("number2", 20);

    SoapSerializationEnvelope envelope = new  SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.bodyOut = rpc;
    envelope.dotNet = true;//IF you are accessing .net based web service  this should be true
    envelope.encodingStyle = SoapSerializationEnvelope.ENC;
    HttpTransport ht = new HttpTransport(serviceUrl);
    ht.debug = true;
    ht.setXmlVersionTag("");
    String result = null;
    try
    {
    ht.call(soapAction, envelope);
    result = (String) (envelope.getResult());
    }
    catch(org.xmlpull.v1.XmlPullParserException ex2){
    }
    catch(Exception ex){
    String bah = ex.toString();
    }
    return resu<
 

Ответ №1:

Вы должны знать, что разработка BlackBerry выполняется с помощью Java-ME, в то время как разработка Android выполняется с помощью Java-SE. В Java примитивы не являются объектами. Примитивами являются такие значения, как double, int, float, char.

Вы не можете передать примитив, в котором ожидается объект, даже в Android. Причина, по которой ваш код работает в Android, заключается в том, что в Java-SE добавлена функция, которой нет в Java-ME, называемая автоматической упаковкой.

Вы можете сделать примитивы похожими на объекты, обернув их. Это то, что делают классы Double, Integer, Float и Character . В Java SE, когда компилятор видит, что примитив передается в качестве аргумента объекта, он автоматически преобразуется в упакованную или «коробочную» версию. Эта функция не существует в Java-ME, поэтому вам нужно сделать бокс самостоятельно. В данном случае это означает:

 rpc.addProperty("number1", new Integer(10));
rpc.addProperty("number2", new Integer(20));