Ich habe NetBean Ruhe Web-Service-Projekt mit mehreren Verfahren wie folgt:Wie mache ich meinen Netbeans Java Rest Client Zugang Post Methode?
@Path("restws")
public class RestWs {
@Context
private UriInfo context;
public RestWs() {
}
@GET
@Produces("application/json")
public String getJson() {
return ("{\"pesan\":\"hello\"}");
}
@PUT
@Produces("text/plain")
@Consumes("application/json")
public String putJson(String content) {
return("Content yang didapat : "+content);
}
@Path("/mahasiswaData/{id}")
@GET
@Produces("application/json")
public String getMahasiswaByID(@PathParam("id")String nim)
{
JSONObject jo = new JSONObject();
jo.put("id", nim);
jo.put("nama", "Budi");
return(jo.toJSONString());
}
@Path("/mahasiswaData/{id}")
@POST
@Consumes("text/plain")
@Produces("application/json")
public String postMahasiswaByID(@PathParam("id")String nim, String data)
{
JSONObject jo = new JSONObject();
jo.put("id", nim);
jo.put("nama", "Budi");
jo.put("message", data);
return(jo.toJSONString());
}
@Path("/mahasiswaQuery")
@GET
@Produces("application/json")
public String getMahasiswaQuery(@QueryParam("nim")String nim, @QueryParam("nama") String nama)
{
JSONObject jo = new JSONObject();
jo.put("nim", nim);
jo.put("nama", nama);
jo.put("method", "GET");
return(jo.toJSONString());
}
@Path("/mahasiswaQuery")
@POST
@Produces("application/json")
public String postMahasiswaQuery(@QueryParam("nim")String nim, @QueryParam("nama") String nama)
{
JSONObject jo = new JSONObject();
jo.put("nim", nim);
jo.put("nama", nama);
jo.put("method", "Post");
return(jo.toJSONString());
}
}
dann i neues Projekt machen und Rest Web-Service-Client hinzufügen. Automatisch NetBeans mir eine neue Klasse gemacht:
public class NewJerseyClient {
private WebTarget webTarget;
private Client client;
private static final String BASE_URI = "http://localhost:8080/PTIRestServer/webresources";
public NewJerseyClient() {
client = javax.ws.rs.client.ClientBuilder.newClient();
webTarget = client.target(BASE_URI).path("restws");
}
public String putJson(Object requestEntity) throws ClientErrorException {
return webTarget.request(javax.ws.rs.core.MediaType.APPLICATION_JSON).put(javax.ws.rs.client.Entity.entity(requestEntity, javax.ws.rs.core.MediaType.APPLICATION_JSON), String.class);
}
public String getMahasiswaByID(String id) throws ClientErrorException {
WebTarget resource = webTarget;
resource = resource.path(java.text.MessageFormat.format("mahasiswaData/{0}", new Object[]{id}));
return resource.request(javax.ws.rs.core.MediaType.APPLICATION_JSON).get(String.class);
}
public String postMahasiswaQuery() throws ClientErrorException {
return webTarget.path("mahasiswaQuery").request().post(null, String.class);
}
public String getMahasiswaQuery(String nim, String nama) throws ClientErrorException {
WebTarget resource = webTarget;
if (nim != null) {
resource = resource.queryParam("nim", nim);
}
if (nama != null) {
resource = resource.queryParam("nama", nama);
}
resource = resource.path("mahasiswaQuery");
return resource.request(javax.ws.rs.core.MediaType.APPLICATION_JSON).get(String.class);
}
public String postMahasiswaByID(Object requestEntity, String id) throws ClientErrorException {
return webTarget.path(java.text.MessageFormat.format("mahasiswaData/{0}", new Object[]{id})).request(javax.ws.rs.core.MediaType.TEXT_PLAIN).post(javax.ws.rs.client.Entity.entity(requestEntity, javax.ws.rs.core.MediaType.TEXT_PLAIN), String.class);
}
public String getJson() throws ClientErrorException {
WebTarget resource = webTarget;
return resource.request(javax.ws.rs.core.MediaType.APPLICATION_JSON).get(String.class);
}
public void close() {
client.close();
}
}
i-Methode zugreifen kann leicht alle erhalten, indem mit so etwas wie:
public static void main(String[] args) {
System.out.println(new NewJerseyClient().getMahasiswaQuery("23", "John"));
}
aber wenn ich versuche, Post/put-Methode für den Zugriff auf mit diesem Code:
public static void main(String[] args) {
NewJerseyClient c = new NewJerseyClient();
System.out.println(c.putJson("{\"name\":\"john\"}"));
System.out.println(c.postMahasiswaQuery());
System.out.println(c.postMahasiswaByID("plain text", "1"));
}
alle Methodenaufruf geben Sie mir eine Ausnahme:
Exception in thread "main" javax.ws.rs.NotAcceptableException: HTTP 406 Not Acceptable
at org.glassfish.jersey.client.JerseyInvocation.convertToException(JerseyInvocation.java:898)
at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:749)
at org.glassfish.jersey.client.JerseyInvocation.access$500(JerseyInvocation.java:88)
at org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:650)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:421)
at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:646)
at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:402)
at org.glassfish.jersey.client.JerseyInvocation$Builder.post(JerseyInvocation.java:305)
at client.NewJerseyClient.postMahasiswaByID(NewJerseyClient.java:68)
at client.NewJerseyClient.main(NewJerseyClient.java:84)
kann mir jemand helfen? Wie kann ich auf die Methode put/post zugreifen? oder hat jemand einen Beispielcode, wie man auf diese Methode zugreifen kann?
danke
es funktioniert !! Vielen Dank .. aber wie wäre es mit öffentlichen String postMahasiswaQuery() löst ClientErrorException { zurückgeben webTarget.path ("MahasiswaQuery"). request(). post (null, String.class); } die post-Methode erfordern Entität, wie kann ich das Objekt gemacht? –
Fina
Ich bin froh, es funktioniert für Sie. Und postMahasiswaQuery arbeitet für mich fina. Könnten Sie Ihre Fragen bitte mit dem vollständigen Beispielcode und der Ausnahme aktualisieren? –