2015-06-30 96 views
0

我想通過GET方法從控制檯應用程序發送一些參數到Web服務。我在下面提供的代碼在兩端「同意」的情況下工作,因爲在控制檯應用和web服務中都有相同數量的參數或沒有參數。Java(澤西島)處理帶有和不帶參數的GET方法請求

我需要能夠處理GET請求取決於數量和哪些參數發送。例如,我使用3個參數,但有時我可能只發送1,2或根本沒有,並且根據這個,我將一直調用適當的函數,而不是listofstuff()。如果可能的話,我該怎麼做,管理這些場景?

web服務代碼:

@GET 
@Produces(MediaType.TEXT_PLAIN) 
public String returnList(
     @QueryParam("id_nr") String sid_nr, 
     @QueryParam("name") String name, 
     @QueryParam("value") String svalue) 
{ 
     int id_nr=Integer.parseInt(sid_nr); 
     int value=Integer.parseInt(svalue); 

     return listofstuff(id_nr,name,value).toString(); 
} 

控制檯應用程序代碼:

ClientConfig config = new ClientConfig(); 
Client client = ClientBuilder.newClient(config); 
WebTarget target = client.target(getBaseURI()); 
int id_nr=1; 
String name="Ion"; 
int value=1; 
System.out.println(target.path("rest").path("hello").queryParam("id_nr", id_nr).queryParam("name", name).queryParam("value", value).request().accept(MediaType.TEXT_PLAIN).get(Response.class).toString()); 
System.out.println(target.path("rest").path("hello").queryParam("id_nr", id_nr).queryParam("name", name).queryParam("value", value).request().accept(MediaType.TEXT_PLAIN).get(String.class)); 
+0

你不能用'QueryParam'重載方法。另見http://stackoverflow.com/questions/10030045/how-can-i-overload-a-method-with-queryparam-in-jersey-spring – Qwerky

回答

0
@DefaultValue("0") 

添加,在@QueryParam的前面()是一種解決方法。不是我正在尋找的東西,但我可以使用它,

+0

對不起,我不明白。你在你的'QueryParam'中發送空值並在你的代碼中檢查它們。那麼問題是什麼? – lrnzcig