java - 为什么 QueryParam 返回 null

标签 java jersey jax-rs

我有一个 post 方法,我尝试添加参数“enc”:

protected void sendPost(String url, String encData) throws Exception {

    URL obj = new URL(url);
    HttpURLConnection con = (HttpURLConnection) obj.openConnection();

    //add request header
    con.setRequestMethod("POST");
    con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");

    // Send post request
    con.setDoOutput(true);
    OutputStreamWriter wr = new OutputStreamWriter(con.getOutputStream());
    wr.write("enc="+encData);
    wr.flush();
    wr.close();

    int responseCode = con.getResponseCode();
    System.out.println("\nSending 'POST' request to URL : " + url);
    //System.out.println("Post parameters : " + urlParameters);
    System.out.println("Response Code : " + responseCode);
}

但是,在我的服务器代码(如下)中,当尝试获取数据时,我得到了 NULL 值。它只是一个字符串,而不是 JSON 或任何花哨的东西。我也尝试将参数写为“?enc=”+endData,但这也不起作用。此外,路径 encRead 已在 url 中输入,因此我认为这不是问题。

    @Path("/encRead")
    @POST
    public void decryptData(@QueryParam("enc") String enc) {

        System.out.println("got endData: "+enc);

    }

到目前为止,我一直引用 Jersey POST Method is receiving null values as parameters 的答案但还是没有找到解决办法

最佳答案

问题是您正在尝试使用 wr.write("enc="+encData); 写入请求正文。 @QueryParam 应该位于 query string 中。所以这会起作用

public static void main(String[] args) throws Exception {
    sendPost(".../encRead", "HelloWorld");
}

protected static void sendPost(String url, String encData) throws Exception {
    String concatUrl = url + "?enc=" + encData;
    URL obj = new URL(concatUrl);
    [...]
    //wr.write("enc=" + encData);

关于java - 为什么 QueryParam 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29957057/

相关文章:

java - 如何通过 JMX 公开 Oracle 连接池统计信息?

java - Proguard - 找不到 apache cxf/java.lang.IllegalArgumentException 的常见父类(super class)异常

java - CXF JAX-RS 的首选语义

cors - 如何在 JAX-RS Web 服务上启用跨域请求?

java - Apache Jax-RS 破坏了 spring-integration-mail

c# - 我如何在基于 Android-Java 的应用程序中使用 DataTable。

java - BufferedReader.readLine() 切断行的开头

rest - 接口(interface)查询参数解析?

java - Jersey SSE - 事件 Output.write 在发送第一条消息后抛出空指针

java - jersey 添加 cookie 然后进行重定向