Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > kSOAP+Web-сервис на PHP. Проблема с кодировкой


Автор: Shushan 18.4.2011, 12:33
Добрый день. Возникла необходимость в получении данных для мидлета из Web-сервиса. 
Для решения задачи воспользовался библиотекой kSOAP. Web-сервис пишу на PHP 5.
Удалённый вызов осуществляется нормально и данные возвращаются корректно. 
Проблема возникает при передаче русских слов. Когда передаю от сервера данные кириллицей, то получаю знаки вопроса: ????????

Код  Web-сервиса на PHP:
Код

<?php

function login($email, $pass)
    {
    $symbol="Привет";
    return $symbol;
    }

$server = new SoapServer(null, array('uri' => "urn:PhpProject3", "encoding" => "UTF-8"));
$server->soap_defencoding = 'utf-8';
$server->addFunction("login");
$server->handle();

?>



Метод клиента для получения информации от Web-сервиса на J2ME с применением библиотек kSOAP:
Код

    public String spellCheck(String email, String password) throws Exception
      {
        // Подготовка запроса SOAP сообщения в памяти объекта
        SoapObject method = new SoapObject("urn:PhpProject3", "login");
        method.addProperty("email", email);
        method.addProperty("password", password);

        // Включить поддержку нетипизированных элементов
        SoapEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
        envelope.encodingStyle = SoapSerializationEnvelope.ENC;
        // Установка объекта ответа
        envelope.bodyOut = method;
        // Подготовка SOAP RPC вызова объекта.
        HttpTransport rpc = new HttpTransport("http://localhost/PhpProject3/index.php");
        rpc.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
        // Вызов удалённого метода (SoapAction необязателен)
        rpc.call(null, envelope);
        // Получить размещение возвращаемого значения
        SoapObject ret = (SoapObject) envelope.bodyIn;
        String spellSugg = ret.getProperty(0).toString();
        return spellSugg;
      }


И ещё один вопрос: 
Если у меня данные в формате XML и я передаю их с применением протокола SOAP, то получается, что у меня XML в XMLе как-то странно... Нормально ли так передавать информацию? Немного запутался в этом вопросе.

Автор: ivanovpv 18.4.2011, 12:49
В J2ME обычно используется кодировка не UTF-8, а ISO 8859-1 - так что надо перекодировать полученные из вебсервиса данные не в UTF-8, а в ISO 8859-1 или с сервера сразу посылать в этой кодировке.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)