Thread View: pl.comp.lang.java
5 messages
5 total messages
Started by Mariusz
Mon, 22 Aug 2011 11:42
SOAP (jws) problem z kodowaniem UTF-8
Author: Mariusz
Date: Mon, 22 Aug 2011 11:42
Date: Mon, 22 Aug 2011 11:42
59 lines
2925 bytes
2925 bytes
Witam,
Piszę pierwszy web service w java i mam maly problem:
Baza danych zwraca mi dane zakodowane w windows-1250, web service wysyla
dane w UTF-8.
Jeśli w wyniku zapytania nie ma znaków polskich to wszystko jest ok ale
jeśli są to dostaję wyjątek:
Service invocation threw an exception with message :
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException:
Invalid byte 2 of 2-byte UTF-8 sequence.; Refer to the server log for more
details
Na początku robiłem tak:
cat.name=rs.getString(2);
nie jest rzucany wyjątek MalformedByteSequenceException ale z polskich liter
mam krzaki...
Robię tak:
//"cat" to moja klasa WebCategory opakowujaca dane - kolumna 2 w wyniku sql
danych zawiera String w windows-1250
//"lst" to ArrayList<WebCategory>
ResultSet rs=null;
Statement stmt;
WebCategory cat;
String errstr="";
try{
stmt = dbConnection.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next()){
cat=new WebCategory();
cat.category_id=rs.getInt(1);
cat.parent_id=rs.getInt(3);
cat.name="";
try {
cat.name=new String(rs.getBytes(2),"windows-1250");
}
catch(UnsupportedEncodingException ex) {
}
lst.add(cat);
}
}
catch(SQLException e){
errstr=e.getMessage();
this.errorCode=3;
return null;
}
Deskryptor metody tego webservice:
@WebResult(name="category")
@WebMethod(operationName = "getDictionaryCategoryList")
public WebCategory[] getDictionaryCategoryList(@WebParam(name = "start")
Integer start, @WebParam(name = "count") Integer count){
WebCategory[] categories =new WebCategory[count];
categories=dba.getCategories(start,count);
return categories;
}
--
Pozdrawiam
Mariusz
Re: SOAP (jws) problem z kodowaniem UTF-8
Author: Jacek Czerwinski
Date: Mon, 22 Aug 2011 13:00
Date: Mon, 22 Aug 2011 13:00
17 lines
1616 bytes
1616 bytes
W dniu 2011-08-22 13:42, Mariusz pisze: > Witam, > Piszę pierwszy web service w java i mam maly problem: > Baza danych zwraca mi dane zakodowane w windows-1250, web service wysyla > dane w UTF-8. Yyyyy ??? W Javie nie ma wyboru, w odróznieniu od innych języków, w jakim kodowaniu są wewnętrzne stringi. To może być tylko unikod (prawdę mówiąc nigdy nie potzrebowałem wiedzieć które jego realizacja) Driver (połączenie) jdbc należy tak uruchomić, aby było ok. Z niektórymi jest od reki (MSSQL), z Firebirdem i Myslq trzeba podawać parametry. Z firebirdem zależało to od drivera, i któremuś staremu driverowi chyba trzeba było podawać GLOBALNE ustawienie w konfiguracji Javy, co było bardzo głupie.
Re: SOAP (jws) problem z kodowaniem UTF-8
Author: Mariusz
Date: Mon, 22 Aug 2011 13:29
Date: Mon, 22 Aug 2011 13:29
24 lines
2189 bytes
2189 bytes
Użytkownik "Jacek Czerwinski" napisał w wiadomości grup dyskusyjnych:j2tjtd$80f$1@news.onet.pl... > Z firebirdem zależało to od drivera, i któremuś staremu driverowi chyba > trzeba było podawać GLOBALNE ustawienie w konfiguracji Javy, co było > bardzo głupie. Właśnie bazą danych jest Firebird ale próbowałem wymuszać inne kodowanie dla drivera (UTF-8) i dane z bazy otrzymywałem z prawidłowymi polskimi znakami ale po przesłaniu do web service dostaję ten sam exception. Drivera Firebirda używam poprzez connection pool/jndi zdefiniowany w glassfish-u (3.1) i tam mam przypisane globalnie wszystkie parametry polaczenia z serwerem DB. Debuggując aplikację dostaję na 100% prawidłowy unikod w obu przypadkach ale nie wiem gdzie coś się z tymi Stringami dzieje że się psują... Chyba na etapie generowania web service, sam nbie wiem... Do pisania tego webservice używam Netbeans-a z wbudowanym glassfishem - może coś netbeans gdzieś we właściwościach coś psuje - nie wiem nawet gdzie szukać przyczyny... -- Pozdrawiam Mariusz
Re: SOAP (jws) problem z kodowaniem UTF-8
Author: Mariusz Pieniążek
Date: Tue, 23 Aug 2011 18:25
Date: Tue, 23 Aug 2011 18:25
9 lines
1309 bytes
1309 bytes
Może coś leży pomiędzy klientem, a web service? Przechwyć czymś komunikację (np. wiresharkiem) i zobacz nagłówki. Zwłaszcza "Content-Type". Poprawnie ma być coś w stylu: POST /item HTTP/1.1 Content-Type: application/soap+xml; charset=utf-8 Content-Length: 250 Jak jest: "Content-Type: text/plain" to źle :)
Re: SOAP (jws) problem z kodowaniem UTF-8
Author: Mariusz
Date: Fri, 26 Aug 2011 08:07
Date: Fri, 26 Aug 2011 08:07
17 lines
1878 bytes
1878 bytes
Użytkownik "Mariusz Pieniążek" napisał w wiadomości grup dyskusyjnych:j30ra9$5gc$1@news.onet.pl... > Jak jest: "Content-Type: text/plain" to źle :) Witam, Sprawdziłem że na 100% web service generuje prawidłowo UTF-8 i odpowiednie nagłówki - okazało się że problemem jest testowy "web service client" generowany automatycznie przez netbeans - jeśli przypiąłem się innym klientem to wszystko jest prawidłowo. Niestety nie udało mi się znaleźć przyczyny nieprawidłowego działania tego generatora w netbeans - może kiedyś to naprawią...;) Dziękuję za sugestie. -- Pozdrawiam Mariusz
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads