Πρόβλημα με Web Service

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
Ria_k
Δημοσιεύσεις: 2
Εγγραφή: 24 Απρ 2010 11:36
Τοποθεσία: THESSALONIKI

Πρόβλημα με Web Service

Δημοσίευση από Ria_k » 06 Ιουν 2010 15:08

Καλησπέρα,

Έχω φτιάξει ένα web service το οποίο αναζητά ένα στοιχείο σε βάση δεδομένων και επιστρέφει μια συμβολοσειρά. Επιστρέφει σωστά το αποτέλεσμα αλλά κατά την λήψη του SOAP Response δημιουργείται το εξής σφάλμα:

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

Μπορεί κάποιος να με βοηθήσει?

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Πρόβλημα με Web Service

Δημοσίευση από nbc » 06 Ιουν 2010 15:21

Ότι σου λέει το μήνυμα... Το response σου δεν είναι valid utf-8.

Λείπει ο encoding header, έχεις διαφορετικό encoding από ότι ο header δηλώνει, άλλα λέει ο server και άλλα το response, στέλνεις κανα σκουπιδάκι πριν το xml (πχ BOM), ή κάτι άλλο συμβαίνει που μόνο εσύ ξέρεις μιας και δεν μας δίνεις κώδικα.

Μήπως έχεις σώσει τίποτα (κάποιο από τα αρχεία σου) με Notepad σε UTF-8?

Άβαταρ μέλους
Ria_k
Δημοσιεύσεις: 2
Εγγραφή: 24 Απρ 2010 11:36
Τοποθεσία: THESSALONIKI

Πρόβλημα με Web Service

Δημοσίευση από Ria_k » 06 Ιουν 2010 17:49

Αυτός είναι ο κώδικας. Απ'ότι έχω καταλάβει το πρόβλημα δημιουργείται από το γεγονός ότι το αποτέλεσμα που επιστρέφεται είναι σε ελληνικούς χαρακτήρες



import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;



import DataAccess.*;


@WebService()


public class DictionaryService {

private DataAccess data;
private String result;


/**
* Web service operation
*/
@WebMethod(operationName = "getDescription")
public String getDescription(@WebParam(name = "inputTerm")
String inputTerm) {



data = new DataAccess();
try
{
result = data.getTermsDescription(inputTerm);
}
catch(Exception e)
{
return null;
}

return result;
}

}

Ενώ όταν το String δεν αποτελείται από ελληνικούς χαρακτήρες η επικοινωνία request/reponse γίνεται κανονικα. Για παράδειγμα:
-------------------------------------------------------------------------------------------------
SOAP Request

<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Header/>
<S:Body>
<ns2:getDescription xmlns:ns2="http://LibraryServices/">
<inputTerm>HTTP</inputTerm>
</ns2:getDescription>
</S:Body>
</S:Envelope>

SOAP Response

<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:getDescriptionResponse xmlns:ns2="http://LibraryServices/">
<return>An Internet Protocol</return>
</ns2:getDescriptionResponse>
</S:Body>
</S:Envelope>

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Πρόβλημα με Web Service

Δημοσίευση από nbc » 06 Ιουν 2010 18:11

Ναι, προφανώς το πρόβλημα είναι στα ελληνικά, μόνο που δεν αναφέρεις την πηγή τους. Αν τα παίρνεις, για παράδειγμα, από βάση και η βάση σου δεν έχει utf-8 κωδικοποίηση και δεν τα μετατρέπεις με κάποιον τρόπο, τότε το response δεν θα είναι valid. Αν τα παίρνεις από αρχείο ή τα έχεις ως literals, τότε το αρχείο δεν θα είναι σωσμένο σωστά. Άλλο UTF-8 και άλλο ISO-8859-7, Windows-1253, κλπ.

Επίσης, δες τι content-encoding στέλνει ο server. Με άλλα λόγια, πρέπει τα ΠΑΝΤΑ να είναι UTF-8. Ο editor που χρησιμοποιείς, η βάση, τα encodings που δηλώνεις, κοκ.

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες