Форум: "Основная";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];
Внизкак изменить кодировку ответа web службы Найти похожие ветки
← →
msgipss (2007-01-24 14:51) [0]Здравствуйте знатоки,
разрешите озвучить вопрос по web службам
создал web службу (CGI Stand-alone executable)
она реализует единственный метод, который возвращает строку, строка содержит символы кириллицы.
Результат выполнения метода web службы приходит в кодировке UTF-8.
Сам вопрос - что нужно сделать чтобы результат приходил в другой кодировке
заранее благодарен за любую информацию по данному вопросу.
← →
tesseract © (2007-01-24 14:56) [1]
> Сам вопрос - что нужно сделать чтобы результат приходил
> в другой кодировке
Ну так сделай ответ в другой кодировке.
← →
msgipss (2007-01-24 15:37) [2]
> Ну так сделай ответ в другой кодировке.
можно у Вас узнать как изменить кодировку по умолчанию, (или ссылку на класс, метод) - где копать то ?
могу предоставить код WSDL (там атрибутом тега XML как раз указано encoding="utf-8")
с уважением
← →
Плохиш © (2007-01-24 16:15) [3]
> msgipss (24.01.07 15:37) [2]
Справка по объекту TOPToSoapDomConvert свойство Encoding. Особо внимательно стоит прочитать предупреждения.
← →
Плохиш © (2007-01-24 16:20) [4]В сервисе под апаче установишь свойство и отгребёшь проблемы в самых неожиданных местах и потратишь кучу времени на поиск :-(
← →
msgipss (2007-01-24 17:07) [5]
> Справка по объекту TOPToSoapDomConvert свойство Encoding.
> Особо внимательно стоит прочитать предупреждения.
стоп - это же как я понял для клиента,
а если у меня клиент .net или php и тд.
или туплю ?
← →
Плохиш © (2007-01-24 18:45) [6]
Normalerweise wird TOPToSoapDomConvert nicht direkt verwendet. TOPToSoapDomConvert-Objekte werden von THTTPRio
für Client-Anwendungen und von TSoapPascalInvoker oder THTTPSoapCppInvoker für Serveranwendungen automatisch instantiiert und eingesetzt.
← →
msgipss (2007-01-25 07:39) [7]я прикинулся якутом, а Вы немцем
*)) - а можно по русски или по англ это же.
← →
Плохиш © (2007-01-25 11:04) [8]
> msgipss (25.01.07 07:39) [7]
> я прикинулся якутом, а Вы немцем
> *)) - а можно по русски или по англ это же.
Переводить мне лень, а английский вариант искать ещё ленивей. К тому же он должен быть в Вашем варианте справки.
← →
msgipss (2007-01-26 14:45) [9]спасибо - посмотрел, все получилось, а под apache - действительно все упало сразу *(
ошибка:
Internal Server Error 500
Exception: EAccessViolation
Message: Access violation at address 00000000. Read of address 00000000
Кстати Плохиш, Вы создавали web службу как Apache2.x Shared Module?
Я не смог запустить апач, при запуске ругается:
The Apache service named reported the following error:
>>> Apache.exe: module "project1.dll" is not compatible with this version of Apache (found 20020612, need 20020903).
И еще вопрос по опциям при создании службы Per Request, Global Object,
второе это создание единого объекта, который обслуживает всех клиентов ?
Попробовал использовать данную опцию - но ничего не изменилось, для каждого клиента все равно создается свой объект.
заранее благодарен за любую информацию по данному вопросу
← →
Плохиш © (2007-01-26 15:16) [10]
> Internal Server Error 500
> Exception: EAccessViolation
К кодировке никакого отношения не имеет. Ошибка в программе при обращении к несуществующему объекту.
> Вы создавали web службу как Apache2.x Shared Module?
Нет, обычное CGI-приложение.
> is not compatible with this version of Apache (found 20020612,
> need 20020903).
Где-то, когда-то сталкивался на просторах интернета с тем, что где-то в генофонде надо какие-то постоянные изменить.
← →
msgipss (2007-01-26 16:27) [11]
> К кодировке никакого отношения не имеет. Ошибка в программе
> при обращении к несуществующему объекту.
>
Создаю экземпляр TOPToSoapDomConvert,
присваиваю свойству объекта HTTPSoapPascalInvoker1.Converter=OPToSoapDomConvert1, даже при наличии дефолтной кодировке - получаю выше описанную ошибку - только на apache.Где-то, когда-то сталкивался на просторах интернета с тем, что где-то в генофонде надо какие-то постоянные изменить.
В смысле генофонде ? Я конечно я понимаю мне не достичь Вашего совершенства *), но в инете я не нашел решения данной проблемы.
С Уважением
← →
Плохиш © (2007-01-26 16:48) [12]
> Создаю экземпляр TOPToSoapDomConvert,
> присваиваю свойству объекта HTTPSoapPascalInvoker1.Converter=OPToSoapDomConvert1,
> даже при наличии дефолтной кодировке - получаю выше описанную
> ошибку - только на apache.
Зачем создаёшь? Мастер же сам всё создаёт и присваивает и незачем в WebModule1 что-либо менять.
> но в инете я не нашел решения данной проблемы.
http://www.drbob42.com/Delphi7/Apache2040.htm
← →
msgipss (2007-01-31 08:57) [13]
> http://www.drbob42.com/Delphi7/Apache2040.htm
спасибо за ссылку, помогло, и данными отдается как и положено быстрее, раза в 2 по сравнению с CGI.
Проблему с кодировкой пока решил на стороне клиента.
единственно непонятна опция Global Object, созданными своими объектами в TWebModule я могу пользоваться в проектах (apache dll) созданных как с опцией Global Object так и с опцией Per Request. Ну естественно это работает только в Web сервисах apache, в созданных cgi такое не проходит хоть с Global Object хоть с Per Request.
Сразу скажу что несколько строчек текста что по ним написано в хелпе я читал *).
Плохиш, если пользовался расскажи мне неразумному или в манул ткни, буду очень признателен
Вообще к чему все спрашиваю: имеется пром.инф.система (сбор, обработка, хранение, представление данных), у нее есть набор интерфейсов, хочу к ней еще один прикрутить (web service). Для работы с данными этой системы существует набор классов, так вот инициализация созданных объектов происходит достаточно долго, зато потом выполнение методов по доступу к данным происходит быстро.
Так вот сейчас пробую создавать эти объекты при загрузке библиотеки, а потом использовать ресурсы этих объектов при каждом запросе. Правда не знаю насколько это будет стабильно работать, по слухам из инета, создание web сервисов на delphi - не самый хороший вариант
← →
Плохиш © (2007-01-31 11:30) [14]
> единственно непонятна опция Global Object, созданными своими
> объектами в TWebModule я могу пользоваться в проектах (apache
> dll) созданных как с опцией Global Object так и с опцией
> Per Request. Ну естественно это работает только в Web сервисах
> apache, в созданных cgi такое не проходит хоть с Global
> Object хоть с Per Request.
> Сразу скажу что несколько строчек текста что по ним написано
> в хелпе я читал
Ты неправильно понял. Эти опции имеют смысл только в рамках приложения. Модули с оптией "Global Object" создаются при запуске приложения и разрушаются при его завершении, т.е. они всегда присутствуют во время работы приложения. В свою очередь модули с опцией "Per Request" создаются только в момент первого обращения к ним и уничтожаются после выполнения запроса. К примеру, в приложении имеется 5 модулей-страниц, но при каждом запросе происходит ображение к одной определённой странице. Если все модули имеют опцию "Global Object", то при каждом ображении будут созданы все 5 модулей, что займёт некоторе время и объём памяти, при опции "Per Request" - будет создан только требуемый модуль.
Различие между Apache-dll и cgi приложениями в том, что первое является сервисом апаче, запускается в момент старта веб-сервера и всегда находится в памяти. А второе является обычным приложением, которое запускается веб-сервером в момент обращения клиента и завершается сразу после выполнения требуемых действий. Поэтому в приложениях apache-dll ты можешь хранить какие-либо данные в памяти между запросами, а при cgi-приложении все данные теряются после выполнения каждого запроса и надо искать другое место для их сохранения (бд, куки).
> Для работы с данными этой системы существует набор классов,
> так вот инициализация созданных объектов происходит достаточно
> долго, зато потом выполнение методов по доступу к данным
> происходит быстро.
Да, при опции "Global Object" увеличивается время на инициализацию (при apache-dll, в принципе, некритично) и занимаемая память, зато последующие запросы происходят быстрее, а при опции "Per Request" начальная инициализация происходит быстрее, зато при каждом запросе приходиться создавать соответствующий модуль, что увеличивает время на запрос, но это для cgi-приложения снизит время требуемое на выполненив запроса, т.к. cgi-приложение создаётся для каждого запроса заново.
> по слухам из инета, создание web сервисов на delphi - не
> самый хороший вариант
Я позволю себе не комментировать слухи :-)
← →
msgipss (2007-01-31 12:59) [15]Уразумел, спасибо человеку именующего себя Плохиш,
из за таких заварники постепенно становятся чайниками *)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.045 c