users@jersey.java.net

Re: [Jersey] Passing a String with slashes, hyphens using _at_Path, @PathParameter/@QueryParameter

From: Marc Hadley <Marc.Hadley_at_Sun.COM>
Date: Mon, 22 Feb 2010 18:09:53 -0500

By default path template parameters are limited to a single path segment so you either need to percent encode the '/' characters in the URL or change the @Path value to match multiple path segments like this @Path("{inchiname: .+}").

Marc.

On Feb 22, 2010, at 5:40 PM, Rameswara Sashi Kiran Challa wrote:

>
> Hello All,
> I am new to JAX-RS and I am trying to use Jersey to build a simple RESTful Webservice.
>
> I have 2 questions. Please clarify these:
>
> • I am trying to have my simple webservice like this URL http://localhost:8080/SampleJersey/rest/inchi/InChIName
>
> The InChIName is a string like this InChI=1S/C9H8O4/c1-6(10)13-8-5-3-2-4-7(8)9(11)12/h2- 5H,1H3,(H,11,12). How do I pass this as a @PathParam, I mean a normal String is working fine but here there are slashes,hyphens, and commas. How do I make it to ignore these. I tried putting it in quotes, but that didnt work. How should I do this?
>
> I got this working using @Context UriInfo and getQueryparamaeters() method. But if I use that my URL should have a '?=' to take in the InChIname. I do not want to have "?=" in my URL structure.
>
> Please correct me if I am thinking wrong.
>
> • I need to pass that InChI to another webservice and that returns an XML as an output and I want to display that XML output as my Webservice's output. If I have @Produces("application/xml") will it work?
>
> This is my code:
>
> @Path("/inchi")
> public class InChIto3D {
>
>
> @GET
> @Path("{inchiname}")
>
>
> @Produces("text/plain")
> 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;
> }
>
> }
>
>
> Thanks in advance
>
> Sashikiran
>
> --
> Sashikiran Challa
> MS Cheminformatics,
> School of Informatics and Computing,
> Indiana University, Bloomington,IN
>