Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.25;
Скачать: CL | DM;

Вниз

как изменить кодировку ответа 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.032 c
15-1172329940
CCil
2007-02-24 18:12
2007.03.25
Почему google стоит так не дешево?


2-1172898188
boa
2007-03-03 08:03
2007.03.25
помогите начинающиму


2-1173027229
Chaval'
2007-03-04 19:53
2007.03.25
Тип db


15-1172922485
Jan
2007-03-03 14:48
2007.03.25
База городов


1-1169793749
GrayFace
2007-01-26 09:42
2007.03.25
Нормальный аналог Shell Controls