2012-08-29 78 views
2

我想在客戶端解組JAXB,但我得到對象的屬性NULL。RestFul服務(spring3)CLIENT java?

那是我在做什麼來解組

URL url = new URL("http://localhost:9191/service/firstName/tony?format=xml"); 

    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 

    conn.setRequestMethod("GET"); 
    conn.setRequestProperty("Accept", "application/atom+xml"); 

    if (conn.getResponseCode() != 200) { 
     throw new RuntimeException("Failed : HTTP error code : " 
       + conn.getResponseCode()); 
    } 

    BufferedReader br = new BufferedReader(new InputStreamReader(
     (conn.getInputStream()))); 


    JAXBContext jaxbContext = JAXBContext.newInstance(LDAPUsers.class); 
    Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); 


    LDAPUsers lu = (LDAPUsers) jaxbUnmarshaller.unmarshal(br); 
    ArrayList<LDAPUser> list = new ArrayList<LDAPUser>(); 


    //list.addAll(lu.getCounty()); 
    **System.out.println(lu.ldapUser.get(0).getFirstName());//this is giving NULL** 

    conn.disconnect(); 

請幫助!

+0

調試和使用斷點到列表中,選中這個名單不是空和對象設置了所有屬性。 – jmventar

+0

它不會觸發setter ... – user1534466

+0

你的XML和域對象是什麼樣的? –

回答

0

檢查您的類被正確序列,並與@XmlRootElement@XmlElement註解。

檢查this example和這個other one。另外full example

把一些斷言檢查NOT NULL對象和列表不爲空

最後,如果你使用的是彈簧3我不明白爲什麼要管理連接和輸入流...使用控制器嘗試的方法,也許你需要一個定製的解組:

@RequestMapping(method=RequestMethod.GET, value="/myurl") 
public ModelAndView getUsers(@RequestBody List<LDAPUsers> users) { 
+0

我是否在客戶端使用該代碼? – user1534466

0

可以設置Unmarshaller上的ValidationEventhandler實例將被通知在解組過程中發生的任何問題。這可以幫助調試問題:

jaxbUnmarshaller.setEventHandler(new ValidationEventHandler() { 

     @Override 
     public boolean handleEvent(ValidationEvent event) { 
      System.out.println(event.getMessage()); 
      return true; 
     } 

    }); 

客戶實例