2012-07-18 19 views
16

Jersey kullanarak çok basit bir son noktam var. URL'm statiktir, herhangi bir istek parametresi gerektirmez. Bu şuna benzer:Jersey HTTP döndürür Durum 405 - Yöntem Kullanılmadı

@GET 
@Path("/mydata") 
@Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON) 
public String getData() { 
    return "{'name': 'value'}"; 
} 

Ancak, bu URL'yi talep her, hep 405'in bir HTTP Durum kodu almak - Yönteme İzin Verilmiyor.

Tuhaf olan şey, @Path ek açıklamasını değiştirir ve bir yol değişkeni tanımlarsa, ör. @Path("/chart/{blah}") iyi çalışıyor.

Bunu işe almak için neden bir yol değişkeni tanımladığım konusunda bir fikrim var mı? Bir yol değişkenine ihtiyacım yok ve sadece 200 yanıt almak için bir tane eklemek aptalca görünüyor.

+1

yılında nasıl URL'yi talebinde olarak, yoluna "/ dinlenme" ekleyerek? Örneğin. - kullanmaya çalıştığınız gerçek URL'yi gönderin. –

+0

Kullandığım URL şudur: http: // localhost: 8080/mydata – seedhead

cevap

10

Teşekkür sorunlar beni diğer yol verir. Benim forma SpringServlet için yanlış bir url-desen girerek aptalca olmak beni bitti. Bunun yerine /*

<servlet> 
    <servlet-name>MyServlet</servlet-name> 
    <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> 
</servlet> 

<url-pattern>/*</url-pattern> 

<servlet-mapping> 
    <servlet-name>Chart Service</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 
3

Ben Belki bir terminal

curl -i -X GET -H 'Accept:application/json' http://localhost:8080/mydata 

2 aşağıdaki çalıştırmayı deneyin) Ya

@Produces({MediaType.APPLICATION_JSON, MediaType.TEXT_HTML}) 
+1

Öneriniz için teşekkürler, ne yazık ki bunların ikisi de hala bir 405'in geri döndürülmesiyle sonuçlanıyor. – seedhead

+0

@seedhead Üzgünüz, yöntem 1'i tekrar deneyebilir misiniz? Yanlış üstbilgiyi kopyalayıp yapıştırdığımı fark ettim – tanyehzheng

4

değişikliği yapmayı deneyin) Eğer

@Produces(MediaType.APPLICATION_JSON). 

1 Belirtilen bunun nedeni muhtemelen düşünüyorum Yöntemin yerine sınıfa açıklama ekleyin:

@Path("/mydata") 
public class MyClass(){ 

@GET 
@Produces(javax.ws.rs.core.MediaType.APPLICATION_JSON) 
public String getData() { 
    return "{'name': 'value'}"; 
} 

} 

Nedenini bilmiyorum ama aynı zamanda önerilerini