2016-05-17 67 views
0

問題,而試圖調用一個RESTful Web服務方法,我得到這個錯誤。REST風格的返回類型

這裏是我調用該方法從我的代碼的方式:

try{ 
     PINClient pin=new PINClient(); 

     String[] resp = pin.tramo(String[].class, "1"); 

      out.println("pin"+resp[1]); 

     }catch(Exception e){ 
      out.println(e); 
     } 

答案是應該來作爲文本/ XML,正如我在RESTful Web服務指定的,但我不知道是什麼正在造成這個問題。 的web服務方法:

@GET 
    @Produces("text/xml") 
    public String[] tramo(@QueryParam("tramo") String tramo) throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException { 
     String[] pin=new String[300]; 
     Class.forName("oracle.jdbc.OracleDriver").newInstance(); 
     Connection conexion = DriverManager.getConnection("jdbc:oracle:thin:@172.17.56.133:1521:TRACK", "oc","oc"); 
     Statement stmt=conexion.createStatement(); 
     ResultSet rs1=stmt.executeQuery("select IDT.ROWID, IDT.ID_ID, IDT.ID_PST_ID, IDT.ID_UM_ID,IDT.ID_POS, IDT.ID_PULSOS, IDT.ID_LANZAR, TEL_FISKERNEL.TEL_COLOR_EXT, TEL_FISKERNEL.TEL_SEC_MONT,TEL_FISKERNEL.TEL_PRS_FAM,TEL_FISKERNEL.TEL_SORTENES_FAM from IDT,TEL_FISKERNEL where IDT.ID_UM_ID = TEL_FISKERNEL.TEL_PIN and ID_PST_ID="+tramo+" order by ID_POS"); 
     int i=0; 
     while(rs1.next()){ 
      pin[i]=rs1.getString("ID_UM_ID"); 
      i++;   
     } 
     rs1.close(); 
     stmt.close(); 
     conexion.close(); 


     return pin; 


    } 

而web服務客戶端:

public <T> T tramo(Class<T> responseType, String tramo) throws ClientErrorException { 
    WebTarget resource = webTarget; 
    if (tramo != null) { 
     resource = resource.queryParam("tramo", tramo); 
    } 
    return resource.request(javax.ws.rs.core.MediaType.TEXT_XML).get(responseType); 
} 
+0

@Produces( 「文本/ XML」),但方法返回字符串[]? – john

+0

是的......它與一個普通的String一起工作,我該怎麼辦? – Asiertxo

+0

您應該返回String或一些將被映射到xml的自定義類型(稱爲marshalling obj - > xml representation)我不知道我是否會自動映射,您需要檢查您的REST API以找出 – john

回答

0

陣列的Retruning,列表是不可能直接。您可以創建一個數組和列表作爲成員的類,並可以返回該類的對象。

N.B:REST不能返回數組或列表

+0

好吧,所以我創建一個類,用一個String []作爲一個包含我所有信息的成員,並將它作爲一個Object發回,是我對?什麼類型應該是最好的檢索該對象?將純文本工作? – Asiertxo

+0

您可以使用jackson將jason輸出轉換爲類對象,或者可以使用JaxB將xml轉換爲類對象。清楚嗎? –

+0

我終於成功地從一個包含String []的對象中構建了一個JSON,輸出非常好。我現在的問題是,我能不能建立這個對象來做同樣的事情?就像直接來自String []一樣,因爲它本身就是一個對象。 – Asiertxo