我之前发布了类似的问题,因为早期帖子中给出的解决方案似乎并不适用。
我正在尝试通过REST客户端将数据(json)发布到URL我正在获取" HTTP状态405 - 方法不允许"在浏览器上,日志上没有其他错误。
我在网络浏览器上输入以下网址。
http://localhost:8080/RESTfulExample/rest/json/metallica/post
使用get的类似调用正在工作,我能够以JSON格式获取数据。
下面是JSONService类和JSONPOST类。
JSONService.java
package com.rest;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import com.Track;
@Path("/json/metallica")
public class JSONService {
@GET
@Path("/get")
@Produces(MediaType.APPLICATION_JSON)
public Track getTrackInJSON() {
Track track = new Track();
track.setTitle("Enter Sandman");
track.setSinger("Metallica");
return track;
}
@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
public Response createTrackInJSON(Track track) {
System.out.println("Hello in Post...");
String result = "Track saved : " + track;
return Response.status(201).entity(result).build();
}
}
JerseyClientPost.java
package com.client;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
public class JerseyClientPost {
public static void main(String[] args) {
try {
Client client = Client.create();
WebResource webResource = client.resource("http://localhost:8080/RESTfulExample/rest/json/metallica/post");
String input = "{\"singer\":\"Metallica\",\"title\":\"Fade To Black\"}";
ClientResponse response = webResource.type("application/json")
.post(ClientResponse.class, input);
if (response.getStatus() != 201) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatus());
}
System.out.println("Output from Server .... \n");
String output = response.getEntity(String.class);
System.out.println(output);
} catch (Exception e) {
e.printStackTrace();
}
}
}
任何人都可以帮我解决如何解决HTTP 405的POST呼叫问题吗?
如果有任何其他详细信息,请与我们联系。
先谢谢。 Jay Shukla