Java Jersey PUT方法和工作客户端

我正在使用Eclipse开发动态Web应用程序.我工作的MySQL-Database通过一个名为’Data Access Object'(= DAO)的类与JDBC连接.我想在这个数据库中创建条目.功能准备就绪.准备好了我的意思是测试和OK.在同一个应用程序中,我实现了Java Jersey的RESTful WebService.它运行良好,我可以调用该服务,它返回我想要的信息.但现在问我的问题:

如何发送包含XML的String?必须在WebMethod中解析String以构建和执行查询.

我的WebService看起来如下:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import javax.ws.rs.Consumes;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;

@Path("/input")
public class Input {
    //DAO instance to have connection to the database.
    //Not used yet.
    //private DAO dao = new DAO();

    @PUT
    @Consumes(MediaType.TEXT_XML)
    @Path("/result")
    public void putIntoDAO(InputStream xml) {
        String line = "";
        StringBuilder sb = new  StringBuilder();
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(xml));
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println(sb.toString());
    }
}

如您所见,我尝试将传入的流打印到控制台.
我重复一些最重要的事情:

>我知道如何解析XML.
>我知道我的DAO正常工作.
>我知道我的WebService也可以运行.

我想知道的是:

>如何将XML-String发送到我的WebService?
>如何在PUT方法中访问此String?

感谢您的关注并尽力帮助我.我很欣赏每一次尝试.

亲切的问候

L.

解决方法:

How do I access this String in my PUT-method?

您可以简单地对方法进行编码以获取String类型的参数,Jersey将从传入的XML请求中映射此参数,因此:

@PUT
@Consumes(MediaType.TEXT_XML)
@Path("/result")
public void putIntoDAO(String xml) {
    // ...
}

应该工作,使用包含完整请求正文的String.

How do I send an XML-String to my WebService?

这取决于您用于将请求发送到服务的内容,该服务可以是通过HTTP进行通信的任何内容.我假设你正在使用Java并坚持使用Jersey,所以有一个选择是你可以通过以下方式使用Jersey客户端:

Client client = Client.create();
WebResource webResource = client.resource("http://localhost:8080/input/result");
String input = "<xml></xml>";
ClientResponse response = webResource
    .type("application/xml")
    .put(ClientResponse.class, input);

有关更多信息,请参见the Jersey Client documentation

上一篇:java – 带有maven的Jersey 2客户端


下一篇:java – Moxy无法将L​​ist编组为JSON