java - JAX-RS @PathParam 如何传递带有斜杠、连字符和等号的字符串

标签 java rest jersey jax-rs

我是 JAX-RS 的新手,我正在尝试使用 Jersey 构建一个简单的 RESTful Web 服务。

我有 2 个问题。请澄清这些:

  1. 我试图让我的简单网络服务像这个 URL http://localhost:8080/SampleJersey/rest/inchi/InChIName

    InChIName 是这样的字符串 InChI=1S/C9H8O4/c1-6(10)13-8-5-3-2-4-7(8)9(11)12/h2- 5H ,1H3,(H,11,12)。如何将它作为 @PathParam 传递,我的意思是普通字符串工作正常,但这里有斜杠、连字符和逗号。我怎样才能忽略这些。我试着把它放在引号里,但这没有用。我该怎么做?

  2. 我需要将该 InChI 传递给另一个 Web 服务并返回一个 XML 作为输出,我想将该 XML 输出显示为我的 Web 服务的输出。如果我有 @Produces("application/xml") 会起作用吗?

这是我的代码:

@Path("/inchi")
public class InChIto3D {
    @GET
    @Path("{inchiname}")
    @Produces("application/xml")
    public String get3DCoordinates(@PathParam("inchiname")String inchiName) {
        String ne="";
        try{
            URL eutilsurl = new URL(
                      "http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?"
                      + "db=pccompound&term=%22"+inchiName+"%22[inchi]");
            BufferedReader in = new BufferedReader(
                                    new InputStreamReader(eutilsurl.openStream()));
            String inputline;
            while ((inputline=in.readLine())!=null)
                ne=ne+inputline;
        }catch (MalformedURLException e1) {
        }catch (IOException e2){
        }
        return ne;
    }
}

最佳答案

这是在路径参数中启用斜杠的方式:

@Path("{inchiname : .+}")
public String get3DCoordinates(@PathParam("inchiname")String inchiName) 

关于java - JAX-RS @PathParam 如何传递带有斜杠、连字符和等号的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2291428/

相关文章:

java - 为所有 Junit 测试创建一个参数

java - REST 服务是否应该包含非 Servlet 内容?

java - 在 Jersey 中使用@Context HttpServletRequest 和@FormDataParam 进行多文件上传

java - 在 Android 中将对象转换为 JSON

c# - 客户端 GET 请求没有返回任何内容?

java.lang.ClassNotFoundException 在第一次调用其余服务时

java - 在 jersey 2.x 中,我收到类似 java.util.concurrent.ExecutionException 的错误

java - SSL 连接超时和读取超时

java - 在 Java 1.4 InputStream 上替换字符

java - 动画 Swingworker 线程和计时器