Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с apache xml-rpc 2.0.1 на стороне клиента 
V
    Опции темы
Goliath
Дата 25.2.2006, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 1.3.2005

Репутация: нет
Всего: 5



Доброго времени суток. У меня проблема с использованием apache xml-rpc 2.0.1. Я написал веб – сервис с использованием XML –RPC. На стороне сервера использую PHP, а на стороне клиента необходимо использовать Java Applet.
Пишу примерно следующий код на Java:
Выдает ошибку:
Код

org.apache.xmlrpc.XmlRpcClient xmlrpc;
try
{
        xmlrpc = new org.apache.xmlrpc.XmlRpcClient ("http://127.0.0.1/judsxmlrpc/server.php");
        Vector params = new Vector ();
        params.addElement (new Integer("1"));
         params.addElement (new Integer("2"));
        xmlrpc.execute ("hotel.list", params);
}
catch (Exception e)
{
       e.printStackTrace();
}

Код

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException
    at org.apache.xmlrpc.XmlRpc.createTypeFactory(XmlRpc.java:235)
    at org.apache.xmlrpc.XmlRpc.<init>(XmlRpc.java:190)
    at org.apache.xmlrpc.XmlRpcClientResponseProcessor.<init>(XmlRpcClientResponseProcessor.java:49)
    at org.apache.xmlrpc.XmlRpcClientWorker.<init>(XmlRpcClientWorker.java:44)
    at org.apache.xmlrpc.XmlRpcClient.getWorker(XmlRpcClient.java:351)
    at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java:191)
    at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java:185)
    at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java:178)
    at UseRpc.main(UseRpc.java:81)


Серверная часть реализована нормально проверено на JavaScript XML-RPC Client. Заранее благодарен за любую помощь.

--------------------
Наша жизнь растрачивается на мелочи… Упрощайте, упрощайте. [Генри Торо] 
PM MAIL   Вверх
tux
Дата 26.2.2006, 03:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Положи в CLASSPATH библиотеку Commons Codec. Скачать можно здесь - http://apache.rediska.ru/jakarta/commons/c...odec-1.3.tar.gz. Возможно, это не единственное, что понадобится. Здесь список зависимостей XML-RPC - http://ws.apache.org/xmlrpc/dependencies.html.
PM MAIL Skype GTalk Jabber YIM   Вверх
Goliath
Дата 28.2.2006, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 1.3.2005

Репутация: нет
Всего: 5



to tux, спасибо за ответ, а то я ни как не мог найти чего нахватает.
Но у меня возникла еще одна проблема. После добавления не достающих jar’ов все за работала, но появился нюанс, когда я возвращаю клиенту string он мне выдает ошибку:
Код

org.apache.xmlrpc.client.XmlRpcClientException: Failed to parse servers response: Unknown type: string
    at org.apache.xmlrpc.client.XmlRpcStreamTransport.readResponse(XmlRpcStreamTransport.java:267)
    at org.apache.xmlrpc.client.XmlRpcStreamTransport.sendRequest(XmlRpcStreamTransport.java:216)
    at org.apache.xmlrpc.client.XmlRpcClientWorker.execute(XmlRpcClientWorker.java:53)
    at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:166)
    at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:136)
    at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:125)
    at UseRpc.start(UseRpc.java:50)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by:
org.xml.sax.SAXParseException: Unknown type: string
    at org.apache.xmlrpc.parser.RecursiveTypeParserImpl.startElement(RecursiveTypeParserImpl.java:115)
    at org.apache.xmlrpc.parser.MapParser.startElement(MapParser.java:137)
    at org.apache.xmlrpc.parser.RecursiveTypeParserImpl.startElement(RecursiveTypeParserImpl.java:126)
    at org.apache.xmlrpc.parser.XmlRpcResponseParser.startElement(XmlRpcResponseParser.java:126)
    at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
    at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at org.apache.xmlrpc.client.XmlRpcStreamTransport.readResponse(XmlRpcStreamTransport.java:265)
    at org.apache.xmlrpc.client.XmlRpcStreamTransport.sendRequest(XmlRpcStreamTransport.java:216)
    at org.apache.xmlrpc.client.XmlRpcClientWorker.execute(XmlRpcClientWorker.java:53)
    at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:166)
    at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:136)
    at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:125)
    at UseRpc.start(UseRpc.java:50)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Это ошибка из-за того, что я скачал вместо Xerces 2.6.2, Xerces 2.7.1?

--------------------
Наша жизнь растрачивается на мелочи… Упрощайте, упрощайте. [Генри Торо] 
PM MAIL   Вверх
tux
Дата 1.3.2006, 03:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Цитата(Goliath @ 28.2.2006, 22:07 Найти цитируемый пост)
Это ошибка из-за того, что я скачал вместо Xerces 2.6.2, Xerces 2.7.1?

Вряд ли. Приведи код, так ничего понять не удастся.
PM MAIL Skype GTalk Jabber YIM   Вверх
Goliath
Дата 1.3.2006, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 1.3.2005

Репутация: нет
Всего: 5



Client:
Код

public class UseRpc extends Applet
{
    XmlRpcClientConfigImpl config;
    XmlRpcClient client;
    
    public void init()
    {
        config = new XmlRpcClientConfigImpl();
        client = new XmlRpcClient();
    }
    
    public void start()
    {
        Object result = null;
        try
        {
            config.setServerURL(new URL("http://127.0.0.1/judsxmlrpc/server.php"));
            client.setTransportFactory(new XmlRpcCommonsTransportFactory(client));
            client.setConfig(config);
            Object[] params = new Object[]{new Integer(1), new Integer(3)};
            result = client.execute("news.test", params);
            System.out.println(result);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}


Server:
Код

include("kd_xmlrpc.php");


$xmlrpc_methods = array();
$xmlrpc_methods['news.test'] = test;
$xmlrpc_methods['method_not_found'] = XMLRPC_method_not_found;


function test( $query_info=0 , $b) 
{
if($query_info==1)
    $news_items['sample'] = "TE";
else
$news_items['sample'] = $b;
    XMLRPC_response(XMLRPC_prepare($news_items), KD_XMLRPC_USERAGENT);
}

function XMLRPC_method_not_found($methodName){
    XMLRPC_error("2", "The method you requested, " . $methodName
        . ", was not found.", KD_XMLRPC_USERAGENT);
}

$xmlrpc_request = XMLRPC_parse($GLOBALS['HTTP_RAW_POST_DATA']);

$methodName = XMLRPC_getMethodName($xmlrpc_request);

$params = XMLRPC_getParams($xmlrpc_request);

if(!isset($xmlrpc_methods[$methodName])){
    $xmlrpc_methods['method_not_found']($methodName);

}else{
    $xmlrpc_methods[$methodName]($params[0], $params[1]);
}

Когда я $news_items['sample'] передаю int все нормально, но как только я добавляю String клиент ругается, причем только Java’ский
--------------------
Наша жизнь растрачивается на мелочи… Упрощайте, упрощайте. [Генри Торо] 
PM MAIL   Вверх
tux
Дата 2.3.2006, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Даже и с кодом нет у меня готового решения. Могу отделаться только версиями и советами smile
  • у тебя все-таки версия не 2.0.1 используется, а 3.0a1. Что если все-таки попробовать ту же 2.0.1? От альфа-версии сложно ожидать стабильности, вдруг замена поможет
  • можно попробовать в объекте XmlRpcClientConfigImpl поиграть с кодировками (методы setEncoding и setBasicEncoding), хотя по умолчанию должна использоваться вполне подходящая UTF-8, но кто знает...
  • в PHP строковый тип хранит не только строки в традиционном понимании, но и двоичные данные и даты. Возможно проблема в этом. В библиотеке XML-RPC, которая поставляется вместе с PHP, есть функция xmlrpc_set_type, которая явно задает что же именно будет передаваться в строке. Но у тебя похоже библиотека другая, возможно и в ней есть что-то похожее.
Может быть какие-то идеи тебе даст вот эта статья - http://2pik.com/article/1/8.html.
PM MAIL Skype GTalk Jabber YIM   Вверх
Goliath
Дата 11.3.2006, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 1.3.2005

Репутация: нет
Всего: 5



Да действительно проблема была в версии 3.0a1. Сенкс tux
--------------------
Наша жизнь растрачивается на мелочи… Упрощайте, упрощайте. [Генри Торо] 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0476 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.