Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.048 c
15-1172479216
NailMan
2007-02-26 11:40
2007.03.25
WinXP 32-бит и 4Гб памяти


2-1173029290
hypno
2007-03-04 20:28
2007.03.25
Как отследить нажатие клавиш


8-1153917194
BadTester
2006-07-26 16:33
2007.03.25
Как из Image сделать полноценную кнопку?


3-1167148645
V-A-V
2006-12-26 18:57
2007.03.25
Можно ли восстановить базу?


2-1172756880
сетевик
2007-03-01 16:48
2007.03.25
Сеть





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский