如何使我的Netbeans Java Rest Client访问Post方法?

美好的

我有使用以下几种方法的netbean Rest Web服务项目:

@Path("restws")

公共类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());
}

}

然后我做一个新的项目,并添加其余的Web服务客户端。netbeans自动使​​我成为一个新的班级:

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();
}

}

我可以通过使用类似以下内容轻松访问所有的get方法:

public static void main(String[] args) {
    System.out.println(new NewJerseyClient().getMahasiswaQuery("23", "John"));
}

但是当我尝试使用此代码访问发布/发布方法时:

 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"));
}

所有的方法调用都给我一个例外:

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)

谁能帮我?如何访问方法放置/发布?还是有人有示例代码如何访问这些方法?

谢谢

维迪亚-维德拉哈兰

您的Rest服务代码看起来不错。但是,Netbeans中的客户端代码生成存在一个问题,我已在Netbeans中提交了一个错误

使您的客户端代码成功。请将putJson请求内容类型从javax.ws.rs.core.MediaType.APPLICATION_JSON更改为javax.ws.rs.core.MediaType.TEXT_PLAIN

 public String putJson(Object requestEntity) throws ClientErrorException {
        return webTarget.request(javax.ws.rs.core.MediaType.TEXT_PLAIN)
                .put(javax.ws.rs.client.Entity.entity(requestEntity, javax.ws.rs.core.MediaType.APPLICATION_JSON), String.class);
    }

同样,对于postMahasiswaByID方法,将请求内容类型javax.ws.rs.core.MediaType.TEXT_PLAIN更改javax.ws.rs.core.MediaType.APPLICATION_JSON

        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.APPLICATION_JSON)
                .post(javax.ws.rs.client.Entity.entity(requestEntity, javax.ws.rs.core.MediaType.TEXT_PLAIN), String.class);
    }

请让我知道它是否有效。

谢谢vidhya

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Java在NetBeans中访问JSON Post方法值

如何获得NetBeans向我展示有关Java方法的正确文档?

我应该如何测试Java Rest API?

JAVA 如何做 PUT 请求 REST Client

Java-如何在Rest Post方法中传递XML请求正文

如何使用 REST API 为 Jenkins 使用 Java 进行 POST

如何在REST方法中转换此Java / Soap方法?

如何修改netbeans中的toString()方法(java)

如何访问我的本地REST API从我的Android设备?

如何使用Advanced Rest Client发出POST请求

如何使用PhpStorm REST CLIENT传递POST参数

如何访问Netbeans(Java)中的资源文件?

我如何使用 /var/www/html 访问 netbeans

Java Spring Rest验证配置属性访问

我如何在REST安全中访问底层的Jackson ObjectMapper?

我如何使用ajax访问Django rest框架

如何向我的Spring REST项目发出正确的POST请求

如何使用Java访问Google Calendar REST API v3

如何通过Java High Level Rest Client打安全弹性搜索

如何通过Jira REST Java Client获得项目的所有问题?

ElasticSearch 7.6.3 Java HighLevel Rest Client:跨多个字段自动建议-如何实施

如何使用 JAVA High Level Rest Client 获取索引中存在的文档总数

Elasticsearch:如何调用mustNot the same length as the array Java High Level REST Client

如何从 Rest API 访问 json

如何声明Rest Client异常?

如何在JAVA / Android中使用Woocommerce REST API的'POST'Http Verb?

如何在Java DSL中从Camel调用REST调用(带有JSON主体的POST)

Java的:如何接收严格的顺序REST交易?

如何在Java中使用REST