Tôi mới dùng JAX-RS và tôi đang cố gắng sử dụng Jersey để xây dựng một RESTful Webservice đơn giản.JAX-RS @PathParam Làm thế nào để vượt qua một chuỗi với dấu gạch chéo, dấu gạch nối & bằng quá
Tôi có 2 câu hỏi. Hãy làm rõ những:
Tôi cố gắng để có webservice đơn giản của tôi như URL này
http://localhost:8080/SampleJersey/rest/inchi/InChIName
Các InChIName là một chuỗi như
InChI=1S/C9H8O4/c1-6(10)13-8-5-3-2-4-7(8)9(11)12/h2- 5H,1H3,(H,11,12)
này. Làm thế nào để vượt qua điều này như là một@PathParam
, tôi có nghĩa là một chuỗi bình thường đang làm việc tốt nhưng ở đây có dấu gạch chéo, dấu gạch nối và dấu phẩy. Làm thế nào để làm cho nó bỏ qua những điều này. Tôi đã thử đặt nó trong dấu ngoặc kép, nhưng điều đó không thành công. Làm thế nào tôi nên làm điều này?Tôi cần chuyển số
InChI
đó cho một dịch vụ web khác và trả về XML dưới dạng đầu ra và tôi muốn hiển thị đầu ra XML đó làm đầu ra của Webservice. Nếu tôi có@Produces("application/xml")
nó có hoạt động không?
Đây là mã của tôi:
@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;
}
}
Cảm ơn rất nhiều. Điều này sẽ làm việc ngay cả đối với = (bằng)? –
Nhấp vào liên kết thứ nhất. Bạn sẽ thấy rằng '=' là một ký tự dành riêng và nó sẽ được mã hóa thành '% 3D'. Ngoài ra, đó là một chút nỗ lực để chỉ làm một 'System.out.println (URLEncoder.encode (" = "," UTF-8 "));' trong một ứng dụng thử nghiệm với một 'chính()';) – BalusC
Cảm ơn Balus. Tôi vẫn còn thiếu cái gì đó.Nếu tôi đưa ra những điều sau đây trong URL REST http: // localhost: 8080/SampleJersey/rest/inchi/"hello-there" evrything được mã hóa tốt. Nhưng nếu tôi giới thiệu dấu gạch chéo trong đó như thế này http: // localhost: 8080/SampleJersey/rest/inchi/"hello/there" tôi nhận được tài nguyên không tìm thấy lỗi. Làm thế nào để có được các dấu gạch chéo được mã hóa ở đây, và nếu tôi muốn các dấu gạch chéo như vậy mà không được mã hóa những gì tôi phải làm gì? –