我正在尝试从我的REST Web服务请求中获取请求参数。 @Path能够映射该方法。但是QueryParam无法从查询参数中获取值。
我的请求网址
192.168.20.147:8080/NestRestApi/rest/hello/ScripInfo/MACLEAN1-11365/nse_cm/531335
package Rest;
import com.omnesys.nest.classes.CNestQuotes;
import com.omnesys.nest.constants.NESTerror;
import java.io.IOException;
import java.util.Vector;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.*;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author maclean
*/
@Path("/hello")
public class ScripInfo {
/**
*
* @param AccountId
* @param Exch
* @param Symbol
* @return
* @throws ServletException
* @throws IOException
*/
@GET
@Path("/ScripInfo/{AccountId}/{exch}/{sym}")
@Produces(MediaType.APPLICATION_ATOM_XML)
public String getScripInfo(@QueryParam("AccountId") String AccountId,@QueryParam("exch") String Exch, @QueryParam("sym") String Symbol) throws ServletException, IOException
{
CNestQuotes oNestQuote = new CNestQuotes();
oNestQuote.sExchSeg=Exch;
oNestQuote.sLoginId=AccountId;
oNestQuote.sSymbol=Symbol;
HttpServletRequest request = null;
HttpServletResponse response = null;
request.setAttribute("QuoteStruct", oNestQuote);
RequestDispatcher dispatch =request.getServletContext().getRequestDispatcher("/NESTGetOMScripInfo") ;
dispatch.include(request, response);
Vector oResult = (Vector) request.getAttribute("NESToutObject");
if (oResult == null || oResult.size() == 0 || oResult.contains(NESTerror.BAD_INPUT) || oResult.contains(NESTerror.NO_DATA) || oResult.contains(NESTerror.MSG_FAILURE)) {
} else {
oNestQuote = (CNestQuotes) oResult.firstElement();
}
return null;
}
}
答案 0 :(得分:4)
AccountId
,exch
和sym
不是查询参数,而是路径参数,而不是@QueryParam
使用@PathParam
。
答案 1 :(得分:2)
不要使用QueryParam for AccountId,exch和sym,而应使用@PathParam。
在JAX-RS中,您可以使用 @PathParem 将@Path表达式中定义的URI参数值注入Java方法。
/用户/查询?名称=斯鲁汀 在上面的URI模式中,查询参数是" nanme = Nasruddin",您可以使用 @QueryParam (" url")
获取网址值