Я новичок в JAX-RS, и я пытаюсь использовать Джерси для создания простого веб-сервиса RESTful.JAX-RS @PathParam Как передать строку со слэшами, дефисами и равными тоже
У меня есть 2 вопроса. Просьба уточнить эти:
Я пытаюсь получить мой простой веб-сервиса, как этот 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
, я имею в виду, что нормальная строка работает нормально, но здесь есть слэши, дефисы и запятые. Как я могу заставить их игнорировать их. Я попытался положить его в кавычки, но это не сработало. Как мне это сделать?Мне нужно передать это
InChI
в другой webservice и возвращает 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;
}
}
Большое спасибо. Будет ли это работать даже для = (равно)? –
Нажмите на 1-ю ссылку. Вы увидите, что '=' также является зарезервированным символом и что он будет закодирован в '% 3D'. Кроме того, немного усилий, чтобы просто сделать 'System.out.println (URLEncoder.encode (" = "," UTF-8 "));' в тестовом приложении с 'main()';) – BalusC
Спасибо Балус. Я все еще что-то упускаю.Если я укажу следующее в URL REST http: // localhost: 8080/SampleJersey/rest/inchi/"hello-there", evrything получит кодировку в порядке. Но если я представляю косую черту, например http: // localhost: 8080/SampleJersey/rest/inchi/"hello/there", я получаю ресурс, который не найден. Как получить косые черты, закодированные здесь, и если я хочу, чтобы слэши как таковые не были закодированы, что мне делать? –