私はちょうどRESTで作業を始めました。以下は私の完全なソースコードです。私はJSON型、プレーンテキスト(TEXT/PLAIN)型でさえ試みました。シンプルなPOSTリクエストによるサービスでHTTP 405エラーが発生しました:メソッドが許可されていません
package com.post;
import javax.ws.rs.core.MediaType;
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{
// TODO Auto-generated method stub
Client client = Client.create();
WebResource r = client.resource("http://localhost:8080/PostExample/rest/priya/metallica/post");
String input = "{\"singer\":\"Metallica\",\"title\":\"Fade To Black\"}";
ClientResponse resp = r.accept(MediaType.TEXT_PLAIN).post(ClientResponse.class, input);
if (resp.getStatus() != 201) {
throw new RuntimeException("Failed : HTTP error code : "
+ resp.getStatus());
}
System.out.println("Output from Server .... \n");
String output = resp.getEntity(String.class);
System.out.println(output);
} catch (Exception e) {
e.printStackTrace();
}
}
}
リソース:
package com.post;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Path("/priya/metallica")
public class JSONService {
@POST
@Path("/post")
@Consumes(MediaType.TEXT_PLAIN)
public Response createTrackInJSON(Track track) {
String result = "Track saved : " + track;
return Response.status(201).entity(result).build();
}
}
POJOクラス:
package com.post;
public class Track {
private String singer;
private String title;
public String getSinger(){
return singer;
}
public void setSinger(String singer){
this.singer=singer;
}
public String getTitle(){
return title;
}
public void setTitle(String title){
this.title =title;
}
}
01それでも
HTTP 405 method not allowed.
JerseyClientを取得
のweb.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>PostExample</display-name>
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.post</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
私はPOJO /リソース/クライアントに対応するアノテーションを使用しますが、同じHTTP 405エラーが発生したことにより、あまりにもXML形式で試してみました。
http://idownvotedbecau.se/toomuchcode/ – vinS
@vinSここですべてが問題を解析するために必要とされます。 – chrylis
ご質問の中で具体的にご記入ください。コード全体を投稿することは誰にも役立ちません。 – vinS