BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 28 мар 2024, 21:54

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Создание счетов и кодировка XML
СообщениеДобавлено: 31 дек 2015, 15:33 
Не в сети

Зарегистрирован: 14 янв 2015, 20:50
Сообщения: 32
Карма: 0
Здравствуйте! Пытаюсь создавать счета, посылаю POST запрос с параметрами(module=bill&action=GenerateBills...). Среди прочих шлю параметр bills, куда строкой вставляю xml(Сейчас такой вариант
Код:
nameValuePairs.add(new BasicNameValuePair("bills", new String(xml.getBytes("UTF-8"),"cp1251")));
). Документы создаются, но как ни мудрил с кодировками, никак не могу добиться корректного отображения кириллицы. Подскажите, пожалуйста, как побороть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание счетов и кодировка XML
СообщениеДобавлено: 31 дек 2015, 16:58 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
а xml у вас правильная?
какая в ней кодировка?
как запрос отсылаете?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание счетов и кодировка XML
СообщениеДобавлено: 31 дек 2015, 17:09 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
зачем вы вообще перекодируете?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание счетов и кодировка XML
СообщениеДобавлено: 11 янв 2016, 14:34 
Не в сети

Зарегистрирован: 14 янв 2015, 20:50
Сообщения: 32
Карма: 0
skn писал(а):
а xml у вас правильная?
какая в ней кодировка?
как запрос отсылаете?

xml, думаю, правильная, ведь документ создаётся:
Код:
<bills><bill type="6" type_title="Счёт по расходам" cid="39905" summ="250.00" account_id="1"><pos name="Расходы на подключение к услуге декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="20" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на диагностику декабрь 2015 г." summ="250.00" sumUnscaled="250.00000" position_id="25" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на доп. услуги декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="30" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><sub_bill  type="6" type_title="" cid="39906" summ="0.00"><pos name="Расходы на подключение к услуге декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="20" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на диагностику декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="25" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на доп. услуги декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="30" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/></sub_bill ><sub_bill  type="6" type_title="" cid="39907" summ="0.00"><pos name="Расходы на подключение к услуге декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="20" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на диагностику декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="25" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на доп. услуги декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="30" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/></sub_bill ><sub_bill  type="6" type_title="" cid="39909" summ="0.00"><pos name="Расходы на подключение к услуге декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="20" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на диагностику декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="25" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на доп. услуги декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="30" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/></sub_bill ><sub_bill  type="6" type_title="" cid="39910" summ="0.00"><pos name="Расходы на подключение к услуге декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="20" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на диагностику декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="25" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на доп. услуги декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="30" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/></sub_bill ><sub_bill  type="6" type_title="" cid="39911" summ="0.00"><pos name="Расходы на подключение к услуге декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="20" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на диагностику декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="25" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на доп. услуги декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="30" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/></sub_bill ><sub_bill  type="6" type_title="" cid="40061" summ="0.00"><pos name="Расходы на подключение к услуге декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="20" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на диагностику декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="25" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на доп. услуги декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="30" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/></sub_bill ><sub_bill  type="6" type_title="" cid="40087" summ="0.00"><pos name="Расходы на подключение к услуге декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="20" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на диагностику декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="25" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на доп. услуги декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="30" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/></sub_bill ><sub_bill  type="6" type_title="" cid="40196" summ="0.00"><pos name="Расходы на подключение к услуге декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="20" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на диагностику декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="25" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/><pos name="Расходы на доп. услуги декабрь 2015 г." summ="0.00" sumUnscaled="0.00000" position_id="30" quantity="1.00" qtynums="2" qtynumsRnd="4" unit="шт." unitCode="796" awlz="0" insum="1"/></sub_bill ></bill></bills>

Про кодировку не совсем понимаю, это строка(String в Java), которую я засовываю в запрос(POST):
Код:
nameValuePairs.add(new BasicNameValuePair("bills", xml));

Вот этот код посылает запрос:
Код:
HttpPost request = new HttpPost(server);
      Credentials credentials = new UsernamePasswordCredentials(username, password);
      BasicScheme scheme = new BasicScheme();
      try {
         request.addHeader(scheme.authenticate(credentials, request, new BasicHttpContext()));
      } catch(AuthenticationException e) {
         logger.error("Bad auth: " + e.getMessage());
         result[1] = "Внутрення ошибка сервера: ошибка аутентификации.";
         return result;
      }
      try {
         request.setEntity(new UrlEncodedFormEntity(nameValuePairs));
      } catch (UnsupportedEncodingException e1) {
         logger.error("Can't get a response", e1);
         result[1] = "Ошибка протокола составления запроса.";
         return result;      }
      

      DefaultHttpClient client = new DefaultHttpClient();
      ResponseHandler<String> handler = new BasicResponseHandler();
      try {
         result[1] = client.execute(request, handler);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание счетов и кодировка XML
СообщениеДобавлено: 11 янв 2016, 14:37 
Не в сети

Зарегистрирован: 14 янв 2015, 20:50
Сообщения: 32
Карма: 0
dimOn писал(а):
зачем вы вообще перекодируете?

Без перекодировки тоже вопросительные знаки вместо всех русских символов, отчаянно копал хоть куда-нибудь.
Код:
nameValuePairs.add(new BasicNameValuePair("bills", xml));

(xml здесь - это String)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание счетов и кодировка XML
СообщениеДобавлено: 11 янв 2016, 20:23 
Не в сети

Зарегистрирован: 14 янв 2015, 20:50
Сообщения: 32
Карма: 0
В итоге получается, что я формирую в Java xml в виде строки для нужных мне документов, отправляю её в биллинг POST запросом, всё распознаётся хорошо, кроме русских символов(на их месте или каракули или вопросики). Уже всю голову сломал с этими кодировками(((


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание счетов и кодировка XML
СообщениеДобавлено: 11 янв 2016, 22:59 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
вы сначала разберитесь в чём у вас проблема, в каком месте.

слишком мало данных, чтобы сделать какой-то вывод. найдите на каком именно этапе портится кодировка.

если у вас xml уже String (она через println распечатывается нормально? или выше откуда вывод с нормальной кириллицей - это непонятно) - зачем вы её перекодируете?
String в Java не имеет никаких кодировок по определению, т.к. это не набор байтов. если xml в виде String у вас корректная, то значит проблема не в БД и не в коде Java, а в дальнейшей судьбе этих данных, скорее всего на моменте POST запроса куда-то вы неправильно его кодируете.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание счетов и кодировка XML
СообщениеДобавлено: 12 янв 2016, 15:03 
Не в сети

Зарегистрирован: 14 янв 2015, 20:50
Сообщения: 32
Карма: 0
Прошу прощения за беспокойство, в итоге проблема была в формировании запроса:
Код:
request.setEntity(new UrlEncodedFormEntity(nameValuePairs));

А нужно
Код:
request.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание счетов и кодировка XML
СообщениеДобавлено: 12 янв 2016, 17:55 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
ну как я и предположил, собственно

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.085s | 36 Queries | GZIP : On ]