#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));