@PathParam 和 @QueryParam


今天調試一個上傳功能,客戶端手持機發送數據,在URL中附加一個參數,后台用@PathParam接收,但是報錯,無法獲取這個參數。

url:http://192.168.1.3/web1_service/convert/vict_hj1000?unit=160106


代碼:

  1. @Path("/vict_hj1000")  
  2. @POST  
  3. @Consumes(MediaType.MULTIPART_FORM_DATA)  
  4. public Response createVictHJ1000Detect(@FormDataParam("name0") InputStream uploadedInputStream, @PathParam("unit") Long unit) throws JSONException {  
  5.                   

也就是說,這個unit參數獲取不到,怎么回事呢?


網上查了一遍,找到了原因,是url中參數的寫法不對,導致后台的@PathParam無法獲取,下面列出@PathParam和@QueryParam的區別:

1. @PathParam ,url中直接在斜杠后面添加參數值,              例如:www.a.com/student/001 ;

2. @QueryParam ,url中在后面添加【鍵值對】形式的參數,例如:www.a.com/student?id=001 ;

我的應用里面,url用的是鍵值對形式的參數,而后台用的是@PathParam,不匹配,因此無法獲取。

解決辦法就是修改URL,取消鍵值對,在斜杠后直接加參數值,改成:http://192.168.1.3/web1_service/convert/vict_hj1000/160106

並且后台修改@Path注解,改為:

  1. @Path("/vict_hj1000/{unit}")  
問題解決!

原文轉載: http://blog.csdn.NET/zhouyingge1104/article/details/51034970



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM