2014-04-09 53 views
0

當我嘗試檢索與休息模板和SimpleXmlHttpMessageConverter我有這個錯誤的XML,我不知道爲什麼SimpleXML的錯誤org.xmlpull.v1.XmlPullParserException:意外的令牌(位置:TEXT @ 1:2

04-09 12:02:00.920:W/System.err(16431):org.springframework.http.converter.HttpMessageNotReadableException:無法讀取[class com.intescia.library.donnee.dto.wsresponse.MenuDto];嵌套的異常是org.xmlpull.v1.XmlPullParserException:意外令牌(位置:TEXT @ 1:2 [email protected]

這裏是我的代碼:

private RestTemplate getRestTemplateInstance() { 
    RestTemplate restTemplate = new RestTemplate(); 
    restTemplate.getMessageConverters().add(new StringHttpMessageConverter()); 
    restTemplate.getMessageConverters().add(new SimpleXmlHttpMessageConverter()); 
    return restTemplate; 
} 


private HttpHeaders getHeader(Context context) { 
    HttpHeaders requestHeaders = new HttpHeaders(); 
    requestHeaders.setAccept(Collections.singletonList(MediaType.ALL)); 
    requestHeaders.setAcceptEncoding(ContentCodingType.ALL); 
    return requestHeaders; 
} 





@Override 
public MenuDto RecupererMenu(Context context,String url) { 

    HttpHeaders requestHeaders = getHeader(context); 
    RestTemplate restTemplate = getRestTemplateInstance(); 
    try { 

     ResponseEntity<MenuDto> responses = restTemplate.exchange(url, HttpMethod.GET, new HttpEntity<String>(requestHeaders),MenuDto.class); 
     if(statusIsNotModified(responses.getStatusCode())) 
      return null; 
     MenuDto menu= responses.getBody(); 
    return menu; 
} catch (Exception e) { 
    e.printStackTrace(); 
    Log.i(TAG+" message="+e.getMessage(), "PROBLEM CONNEXION OU MAUVAISE URL? ERROR PAS DE REPONSE A PARTIR DE L URL= "+url); 
    return null; 
} 

} 

當我用字符串嘗試它的正常工作

public MenuDto RecupererMenu(Context context,String url) { 

    HttpHeaders requestHeaders = getHeader(context); 
    RestTemplate restTemplate = getRestTemplateInstance(); 
    String responseString=""; 
    try { 
     ResponseEntity<String> responses = restTemplate.exchange(url, HttpMethod.GET, new HttpEntity<String>(requestHeaders),String.class); 
     responseString= responses.getBody(); 
     Serializer serializer = new Persister(); 
     MenuDto menu = serializer.read(MenuDto.class, responseString); 
    return menu; 
} catch (Exception e) { 
    e.printStackTrace(); 
    Log.i(TAG+" message="+e.getMessage(), "PROBLEM CONNEXION OU MAUVAISE URL? ERROR PAS DE REPONSE A PARTIR DE L URL= "+url); 
    return null; 
} 

} 

文件的XML是這樣的:

<menu> 
<menu_item gabarit="a_la_une"> 
<label>A la Une</label> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/a_la_une.aspx 
</url> 
</menu_item> 
<menu_item gabarit="groupe"> 
<label>Profession coiffeur</label> 
<menu> 
<menu_item gabarit="rubrique"> 
<label>Marché</label> 
<id>25</id> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/marche 
</url> 
</menu_item> 
<menu_item gabarit="rubrique"> 
<label>Organisation et management</label> 
<id>30</id> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/Organisation-et-management 
</url> 
</menu_item> 
<menu_item gabarit="rubrique"> 
<label>Stratégies d'entreprise</label> 
<id>31</id> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/Strategies-dentreprise 
</url> 
</menu_item> 
<menu_item gabarit="rubrique"> 
<label>Equipement et design</label> 
<id>32</id> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/Equipement-et-design 
</url> 
</menu_item> 
<menu_item gabarit="rubrique"> 
<label>Bien être</label> 
<id>33</id> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/Bien-etre 
</url> 
</menu_item> 
<menu_item gabarit="rubrique"> 
<label>Ecoles</label> 
<id>572</id> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/Ecoles/ 
</url> 
</menu_item> 
</menu> 
</menu_item> 
<menu_item gabarit="groupe"> 
<label>Style et Savoir faire</label> 
<menu> 
<menu_item gabarit="rubrique"> 
<label>L'invité du mois</label> 
<id>44</id> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/Linvite-du-mois/ 
</url> 
</menu_item> 
<menu_item gabarit="rubrique"> 
<label>Tendances</label> 
<id>41</id> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/Tendances/ 
</url> 
</menu_item> 
<menu_item gabarit="rubrique"> 
<label>Savoir-faire</label> 
<id>42</id> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/Savoir-faire/ 
</url> 
</menu_item> 
<menu_item gabarit="rubrique"> 
<label>Le point sur...</label> 
<id>43</id> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/Le-point-sur/ 
</url> 
</menu_item> 
<menu_item gabarit="rubrique"> 
<label>Fiches techniques</label> 
<id>29</id> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/Fiches-techniques/ 
</url> 
</menu_item> 
<menu_item gabarit="rubrique"> 
<label>Formations artistiques</label> 
<id>45</id> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/Formations-artistiques/ 
</url> 
</menu_item> 
</menu> 
</menu_item> 
<menu_item gabarit="groupe"> 
<label>La rédac a repéré</label> 
<menu> 
<menu_item gabarit="rubrique"> 
<label>Salons insolites</label> 
<id>46</id> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/Salons-insolites/ 
</url> 
</menu_item> 
<menu_item gabarit="rubrique"> 
<label>Shopping produits</label> 
<id>47</id> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/Shopping-produits/ 
</url> 
</menu_item> 
<menu_item gabarit="rubrique"> 
<label>Banc d'essai</label> 
<id>48</id> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/Banc-dessai/ 
</url> 
</menu_item> 
<menu_item gabarit="rubrique"> 
<label>Accessoires</label> 
<id>49</id> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/Accessoires/ 
</url> 
</menu_item> 
</menu> 
</menu_item> 
<menu_item gabarit="groupe"> 
<label>Culture Coiffure</label> 
<menu> 
<menu_item gabarit="rubrique"> 
<label>Les irrésistibles</label> 
<id>50</id> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/Les-irresistibles/ 
</url> 
</menu_item> 
<menu_item gabarit="rubrique"> 
<label>Le saviez-vous ?</label> 
<id>51</id> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/Le-saviez-vous/ 
</url> 
</menu_item> 
<menu_item gabarit="rubrique"> 
<label>Couturiers du cheveu</label> 
<id>52</id> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/Couturiers-du-cheveu/ 
</url> 
</menu_item> 
</menu> 
</menu_item> 
<menu_item gabarit="groupe"> 
<label>Evènements</label> 
<menu> 
<menu_item gabarit="rubrique"> 
<label>Vidéos</label> 
<url> 
http://www.coiffuredeparis.fr/applis/rubrique_videos.xml 
</url> 
</menu_item> 
</menu> 
</menu_item> 
<menu_item gabarit="groupe"> 
<label>Services</label> 
<menu> 
<menu_item gabarit="rubrique" ref="agenda"> 
> 
<label>Agenda</label> 
<id>229</id> 
<url> 
http://coiffuredeparis-recette.intescia.com/applis/Agenda/ 
</url> 
</menu_item> 
<menu_item gabarit="emplois"> 
<label>Offres d'emploi</label> 
<url>http://www.coiffuredeparis.fr/applis/emploi.aspx</url> 
</menu_item> 
<menu_item gabarit="rubrique"> 
<label>Fond de Commerce et Vente de matériel</label> 
<url> 
http://www.coiffuredeparis.fr/applis/fond_de_commerce.aspx 
</url> 
</menu_item> 
<menu_item gabarit="webview"> 
<label>Prochain Business Trophy</label> 
<url> 
http://www.coiffuredeparis.fr/Evenements/Business-Trophy/2014/2/Business-Trophy-2014/ 
</url> 
</menu_item> 
<menu_item gabarit="webview"> 
<label>Dernier Business Trophy</label> 
<url> 
http://www.coiffuredeparis.fr/Evenements/Business-Trophy/2014/3/Retour-sur-les-laureats-2013-2019615W/ 
</url> 
</menu_item> 
</menu> 
</menu_item> 
<menu_item gabarit="groupe"> 
<label>MON COMPTE</label> 
<menu> 
<menu_item gabarit="compte"> 
<label>Se déconnecter</label> 
</menu_item> 
<menu_item gabarit="abonnement"> 
<label>Mon abonnement</label> 
</menu_item> 
<menu_item gabarit="favoris"> 
<label>Mes Favoris</label> 
</menu_item> 
</menu> 
</menu_item> 
<menu_item gabarit="parametres"> 
<label>Paramètres</label> 
</menu_item> 
<menu_item gabarit="avis"> 
<label>Donner un avis sur l'application</label> 
</menu_item> 
<menu_item gabarit="autopromo"> 
<label>Autopromo</label> 
</menu_item> 
</menu> 

類MenuDto.java是:

 @Root(name="menu",strict=false) 
public class MenuDto { 

    public List<MenuItemDto> getListMenuItem() { 
     return listMenuItem; 
    } 

    public void setListMenuItem(List<MenuItemDto> listMenuItem) { 
     this.listMenuItem = listMenuItem; 
    } 

    public MenuDto(){ 
     super(); 
    } 

    @ElementList(entry="menu_item",inline=true) 
    private List <MenuItemDto> listMenuItem ; 

} 

MenuItemDto.java:

   @Root(name="menu_item",strict=false) 

公共類MenuItemDto {

public String getGabarit() { 
    return gabarit; 
} 
public void setGabarit(String gabarit) { 
    this.gabarit = gabarit; 
} 
public String getLabel() { 
    return label; 
} 
public void setLabel(String label) { 
    this.label = label; 
} 
public String getUrl() { 
    return url; 
} 
public void setUrl(String url) { 
    this.url = url; 
} 
public MenuDto getMenu() { 
    return menu; 
} 
public void setMenu(MenuDto menu) { 
    this.menu = menu; 
} 
public MenuItemDto(){ 
    super(); 
} 

@Attribute 
private String gabarit; 

@Element 
private String label; 

@Element(required=false) 
private String url; 

@Element(required=false) 
private String smartAdPageId; 

public String getSmartAdPageId() { 
    return smartAdPageId; 
} 
public void setSmartAdPageId(String smartAdPageId) { 
    this.smartAdPageId = smartAdPageId; 
} 

public MenuItemDto(String label) { 
    super(); 
    this.label = label; 
} 

@Element(name="id",required=false) 
private String Rubriqueid; 

@Element(required=false) 
private MenuDto menu; 
public String getRubriqueid() { 
    return Rubriqueid; 
} 
public void setRubriqueid(String rubriqueid) { 
    Rubriqueid = rubriqueid; 
} 

}

感謝的您的答覆

回答

0

有同樣的問題:

與解決這樣的:

請參閱此鏈接:Reading UTF-8 - BOM marker

//InputStreamReader isr = new InputStreamReader(body.in(), charset); InputStreamReader isr = new InputStreamReader(new BOMInputStream(body.in(), false, ByteOrderMark.UTF_8));

在類SimpleXmlConverter(改造和SimpleXMLConverter)

+0

已覆寫你好,請你能向我們提供您的代碼? –

相關問題