2014-07-15 10 views
13

Tôi đã một Java servlet Jersey dựa trên:Set tham số truy vấn trên một Jersey thử nghiệm Gọi

@Path("foo") 
class Foo { 
    @GET 
    @Path("bar") 
    public Response bar(@QueryParam("key") String value) { 
    // ... 
    } 
} 

tôi có thể gọi nó trong Tomcat tốt như:

http://localhost:8080/container/foo/bar?key=blah 

Tuy nhiên, trong JerseyTest của tôi, sử dụng Grizzly, nó không xử lý các thông số đúng cách. trường hợp thử nghiệm này trả về một lỗi 404:

@Test 
public void testBar() { 
    final Response response = target("foo/bar?key=blah").request().get(); 
} 

tôi nghi ngờ vấn đề là nó đang tìm kiếm một nguồn tài nguyên tên foo/bar?key=blah chứ không phải cố gắng để vượt qua key=blah đến tài nguyên tại foo/bar. Nếu tôi chỉ vượt qua "foo/bar" đến target(), tôi nhận được 500, khi mã này ném một ngoại lệ cho tham số null.

Tôi đã xem qua tài liệu Kiểm tra Jersey và một số ví dụ, và tôi đã tìm thấy một số công cụ tìm kiếm bí ẩn có thể dùng để truyền tham số cho GET, nhưng không cái nào giống như gán giá trị cho tham số, vì vậy tôi đã 't tích cực như thế nào tôi sẽ sử dụng nó.

Tôi làm cách nào để chuyển giá trị của mình cho tham số đó?

Trả lời

32

JavaDoc đến WebTarget.queryParam() sẽ cung cấp cho bạn câu trả lời cho vấn đề của bạn. Về cơ bản, bạn cần phải chuyển đổi mã của mình thành một cái gì đó như:

target("foo/bar").queryParam("key", "blah").request().get() 
+1

Chỉ cần gợi ý: đảm bảo bạn gọi 'truy vấnParam' trước' yêu cầu'. API thông thạo sẽ không cho phép nó sau đó. Đã cho tôi một phút. –

+0

Tôi có thể sử dụng những gì để yêu cầu đăng bài? –

+0

Cảm ơn chúa đã cho chúng tôi Stackoverflow –

Các vấn đề liên quan