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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конвертирование String в формат передачи строковых, параметров в http 
V
    Опции темы
Alexandr87
Дата 22.2.2006, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

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



Есть строка String, её необходимо конвертнуть в формат %xx%xx%xx...
Помню, что был какой-то класс, но вот какой не помню

Тут, же походу вопрос, как сервер узнает в какой кодировке представлены эти строки.
PM Jabber   Вверх
tux
Дата 22.2.2006, 07:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


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

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



Класс такой - http://java.sun.com/j2se/1.5.0/docs/api/ja...URLEncoder.html. Соответственно для декодирования можно использовать http://java.sun.com/j2se/1.5.0/docs/api/ja...URLDecoder.html.
Сервер о кодировке запроса ничего не знает если ему явно не указать либо какими-то специфическими настройками сервера либо установкой кодировки перед первым обращением к объекту HttpServletRequest. По умолчанию сервер считает, что кодировка - iso8859-1.
PM MAIL Skype GTalk Jabber YIM   Вверх
Alexandr87
Дата 22.2.2006, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

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



Точна он. Спасибо.
А как сообщить серверу, что я намереваюсь передавать параметры в utf-8
PM Jabber   Вверх
tux
Дата 23.2.2006, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


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

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



Цитата(Alexandr87 @ 22.2.2006, 22:23 Найти цитируемый пост)
А как сообщить серверу, что я намереваюсь передавать параметры в utf-8

Самый универсальный способ - использовать фильтр, примерно такой:
Код

import java.io.*;
import javax.servlet.*;

public class SelectLanguageFilter implements Filter {
    private String encoding;
    
    public void init(FilterConfig config) throws ServletException {
        encoding = config.getInitParameter("requestEncoding");
        
        if(encoding==null) encoding="koi8-r";
    }
    
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain next)
    throws IOException, ServletException {
        request.setCharacterEncoding(encoding);
        next.doFilter(request, response);
    }
    
    public void destroy(){}
}

И в web.xml описать его таким макаром:
Код

<filter>
    <filter-name>SelectLanguageFilter</filter-name>
    <filter-class>ru.esstu.entrant.filter.SelectLanguageFilter</filter-class>
  <init-param>
    <param-name>requestEncoding</param-name>
    <param-value>utf-8</param-value>
  </init-param>
</filter>

<filter-mapping>
    <filter-name>SelectLanguageFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Фильтр будет выполняться перед всеми запросами, приходящими к веб-контейнеру, и устанавливать кодировку до первого обращения к объекту HttpServletRequest.

Некоторые веб-контейнеры и веб-фреймворки дают возможность устанавливать кодировку запроса в своих настройках. В Spring есть реализация такого же фильтра, можно использовать ее.
PM MAIL Skype GTalk Jabber YIM   Вверх
Alexandr87
Дата 23.2.2006, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

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



Э, может я не совсем понял, но я имел ввиду работу с уже готовым веб-сервером Apache. Всмысле, я, как клиент, передаю параметры, например в гвест сообщение, и вот как бы мне передать в нужной кодировке.
PM Jabber   Вверх
tux
Дата 23.2.2006, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


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

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



Тогда видимо я не совсем понял. У тебя есть готовое приложение, к которому ты посылаешь запрос, правильно? И тебе нужно задать кодировку передаваемого сообщения.
Если ты выполняешь запрос из html-страницы, попробуй задать заголовок Content-type с правильной кодировкой и атрибут acceptCharset в тэге формы:
Код

<form action="/doSomething" acceptCharset="utf-8">
...
</form>

Если выполняешь запрос из программы, например, с помощью Commons-HttpClient, то запрос может выглядеть так:
Код

HttpClient cl = new HttpClient();
HttpMethod m = new GetMethod("http://localhost/doSomething");

m.addRequestHeader("Content-Type", "text/html; charset=UTF-8");
try {
    NameValuePair[] params = new NameValuePair[] {
        new NameValuePair("name", "bla bla")
    };
    cl.executeMethod(m);
    String response = m.getResponseBodyAsString();
} catch (HttpException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

Хотя я не уверен, что все это поможет - кроме посылки правильно закодированного запроса еще и сервер должен понимать в какой кодировке к нему должен прийти запрос.
PM MAIL Skype GTalk Jabber YIM   Вверх
Alexandr87
Дата 24.2.2006, 05:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

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



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

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

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


 




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


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

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