Отправка арабского текста через веб-сервис Java - PullRequest
0 голосов
/ 12 февраля 2012

Я получаю специальные символы (?????) на своем мобильном телефоне, когда я отправляю арабский текст через JAVA Webservice.Ниже показано, как я реализовал.

  1. Клиентская и тестовая программа Webservice работает на моем компьютере с Windows, и я работаю с Eclipse, чей набор символов ISO-8859-1.
  2. Inмоя тестовая программа Я кодирую (используя URLEncoder) арабскую строку в ISO-8859-6.
  3. Хост WebService установлен на сервере Linux.Здесь я конвертирую закодированную строку в байты.Затем я пересылаю этот запрос в службу Java через TCP IP.Эта служба отвечает за отправку SMS.
  4. В этой службе Java я декодирую с тем же шифрованием, что и выше, и отправляю сообщения поставщику SMS.

Реализация

/**
 * Arabic Implementation is as below
 **/
String message= arabictext;
message=URLEncoder.encode(message,"ISO-8859-6");
sendMessage(message,uername,password); ///webservice call

Код хоста веб-службы:

sendMessage(p_message,username,password){
    byte[] request = message.getbytes();//tried by passing character set
    Tcserver.post(request);//posting the request to java client
}

Примечание. Хост веб-службы и клиент Java размещаются на одном физическом сервере.

Клиент Java:

sendSMS(p_message){
    message =URLDecoder.decode(p_message,"ISO-8859-6");//send message to mobile provider.
    sendmessagetoProvider(message);
}

, когда язапустил TCPViewer на моем компьютере, я вижу специальные символы.Любая идея, как решить эту проблему.

1 Ответ

0 голосов
/ 12 февраля 2012

Я думаю, что проблема где-то в вашем sendmessagetoProvider, а также в использовании для URLEncoder и URLDecoder.

Когда вы отправляете сообщение, вам, вероятно, придется его кодировать.Вместо этого вы звоните decode на стороне клиента.КСТАТИ ИМХО это и есть причина получения "специальных символов".

Итак, сначала взглянем на спецификацию API.Что ожидает метод sendmessagetoProvider?Возможно, вам не нужно кодировать строку как URL?Возможно, он просто поддерживает Unicode или вы должны предоставить кодировку при вызове клиента?Затем исправьте свой код соответствующим образом.

Удачи.

...