Salut à tous,
Je suis actuellement en train de développer une application en JAVA pour mon épreuve du BTS, celle-ci utilise un WebService que j’ai créer en PHP.
Seulement voilà, lorsque je traite le retour du WS afin de le transformer en JSONObject puis de créer les objets, je suis confronter à l’erreur
1 | org.json.JSONException: Unterminated string at 656 [character 657 line 1] |
J’ai effectivement vérifié dans l’InputStream qui contient la réponse du WS, et il n’y a que 656 caractères qui sont présents. Or quand j’ouvre le WS dans le navigateur, la réponse est complète et donne un JSON valide.
J’ai cherché sur internet mais je n’arrive pas à trouver, et n’étant pas un as en anglais, cela ne m’aide pas non plus.
Voilà mon code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | private static String getGlobalWS(String url){ String resp = ""; try { URLConnection connection = new URL(url).openConnection(); connection.setDoOutput(true); connection.setRequestProperty("Accept-Charset", charset); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + charset); OutputStream output = connection.getOutputStream(); output.write(url.getBytes(charset)); InputStream response; response = connection.getInputStream(); System.out.println(response.available()); while(response.available()>0){ resp += (char)response.read(); } response.close(); } catch (IOException x) { x.printStackTrace(); } return resp; } public static ObservableList<Produit> getAllPRD(){ String query; query = protocol + "://" + server + "/Produit/getPRDs"; System.out.println(query); url = query; System.out.println(getGlobalWS(url)); JSONObject PRDs = new JSONObject(getGlobalWS(url)); } |
Les variables "protocol" et "server" sont OK car il y a d’autres méthodes qui font elles aussi appel au WS et qui fonctionnent correctement car elles ne renvoient pas plus de 656 caractères, même si cela va arriver avec l’augmentation de la taille de la BDD.
La variable "charset" vaut "UTF-8" et est déclarer en "private static final"
Est-ce que quelqu’un aurai une idée car du coup je suis bloqué pour le reste de l’application.
Merci d’avance.