Bonjours a tous,

Voila je dois récupérer des données via un WebService, les données renvoyé par le serveur sont stocké dans un InputStream puis parser via un DocumentBuilderFactory, lorsque je suis connecté en wifi j'y accède (au WebService) via une adresse privée et il n'y a aucun problème.
Lorsque que je suis en 3G j'utilise une adresse public, l'InputStream récupéré semble incomplet puisque lorsque je tente de le parser, une exception est généré :
org.xml.sax.SAXParseException: unterminated entity ref (position:ENTITY_REF &@1:27 in java.io.InputStreamReader@2b085d68)
J'ai remarqué que lorsque je debugué mon application si je resté longtemps sur un point d'arrêt ou autres l'InputStream est parsé "quasiment" sans problème.....comme si mon InputStream n'était pas récupéré complètement, ou qu'il lui faudrait plus de temps.
Je précise que la réponse renvoyé par le serveur est correct.

Le code où je me connecte au serveur et récupère la réponse

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
public SOAPrequest(Context p_context)
	{
		//On initialise les variables
		_context = p_context;
		_methodName = "Companies";
		_nameSpace = "nav/system";
		_parameters = new HashMap<String, String>();
		if (isNetworkAvailable())
		{
			//Une connexion Internet a ÈtÈ dÈtectÈe
			try
			{
				//On crÈe l'URL
				createUrl("systemService");
 
				//On ouvre la connexion
				_connection = (HttpURLConnection) _url.openConnection();
 
				//On ajoute les Headers
				addHeaders(true);
 
				//On crÈe le corps de la requÍte SOAP
				createSoapBody();
 
				//On crÈe l'enveloppe
				String _soap = createSoapEnvelope();
 
				//On se connecte
				_connection.connect();
 
				//On Ècrit la requÍte SOAP
				OutputStream _request = null;
				_request = _connection.getOutputStream();
				_request.write(_soap.getBytes(), 0, _soap.getBytes().length);
 
 
				//On rÈcupËre l'erreur s'il y en a une
				if (_connection.getResponseCode() >= 300)
				{
					//Il y a eu une erreur
					_erreur = _connection.getResponseMessage();
				}
				else
				{
					//Aucune erreur trouvÈe
					_erreur = "";
				}
 
				//On rÈcupËre la rÈponse s'il y en a une
				_reponse = _connection.getInputStream();
				Log.e("PARSE", _reponse.toString());
				//On ferme la requÍte
				_request.close();
			}
			catch (IOException e)
			{
 
				e.printStackTrace();
			}
		}
		else
		{
			//Aucune connexion Internet dÈtectÈe
			_erreur = "Aucune connection Internet dÈtectÈe, veuillez vous reconnectez";
		}
	}
Le code de mon parser :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public static ArrayList<String> parseToListCompany(InputStream p_reponse)
	{
		ArrayList<String> _listContactGeo = new ArrayList<String>();
		DocumentBuilderFactory _factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = null;
 
			// on crÈÈ un DOM depuis l'inputStream recu en parametre
 
			try {
				builder = _factory.newDocumentBuilder();
			} catch (ParserConfigurationException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			Document _dom = null;
 
			try {
				_dom = builder.parse(p_reponse);
			} catch (SAXException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
 
			try {
				p_reponse.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
 
			Element _racine = _dom.getDocumentElement();
			NodeList _listeElement = _racine.getElementsByTagName("return_value");
			int length = _listeElement.getLength();
			for(int index_listElement=0 ; index_listElement < length ; index_listElement++)
			{
				Element element = (Element)_listeElement.item(index_listElement);
				//String _chaine =element.getNodeName();
				String _fieldName=element.getTextContent();
				_listContactGeo.add(_fieldName);
 
			}
		return _listContactGeo;
	}
Merci