2013-11-25 96 views
0

我遇到了Jersey PUT方法的问题。我只是想添加一个String(MediaType APPLICATION_JSON)到localhost:8080/testtest。但随着线尝试PUT方法(Jersey/Java)时出错405:方法不允许

service.path("testtest") 
      .type(MediaType.APPLICATION_JSON) 
      .put(String.class, "{\"firstName\":\""+firstName+"\",\"lastName\":\""+lastName+"\"}"); 

尝试这个,当我得到这个异常:

Exception in thread "main" com.sun.jersey.api.client.UniformInterfaceException: PUT http://localhost:8080/testtest returned a response status of 405 Method Not Allowed 

你有一个想法如何解决这个问题?

这里是整个代码:

import java.io.IOException; 
import javax.ws.rs.Path; 
import javax.ws.rs.core.MediaType; 
import com.sun.jersey.api.client.Client; 
import com.sun.jersey.api.client.WebResource; 
import com.sun.jersey.api.container.httpserver.HttpServerFactory; 

@Path("testtest") 
public class TestClass { 

    public static void main(String[] args) throws IllegalArgumentException, IOException { 
     test(); 
    } 

    private static void test() throws IllegalArgumentException, IOException { 
     HttpServer server = HttpServerFactory.create("http://localhost:8080/"); 
     server.start(); 
     WebResource service = Client.create().resource("http://localhost:8080/"); 
     String firstName = "First Name"; 
     String lastName = "Last Name"; 

     service.path("testtest") 
      .type(MediaType.APPLICATION_JSON) 
      .put(String.class, "{\"firstName\":\""+firstName+"\",\"lastName\":\""+lastName+"\"}"); 
     // Exception in thread "main" com.sun.jersey.api.client.UniformInterfaceException: PUT http://localhost:8080/testtest returned a response status of 405 Method Not Allowed 

     System.out.println(service.path("testtest").accept(MediaType.APPLICATION_JSON).get(String.class)); 
     server.stop(0); 
    } 

} 

非常感谢你提前!

回答

2

很可能您的服务方式没有@PUT注释。发布您的服务代码以获得更好的诊断。