Problème dans l’utilisation d'un WebService en JAVA

Erreur lors du traitement du JSON car la requête ne récupère pas l'ensemble de la chaine

Le problème exposé dans ce sujet a été résolu.

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.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte