0

我在我的参数上收到“null”。到目前为止,我发现人们在 java 上使用“PathParams”、“FormParams”和“QueryParams”从请求中获取他们的变量,但是在我的情况下,使用 post 我没有 PathParams,并且由于某种原因 FormParams 和 QueryParams 正在返回null 就好像我从未发送过它们一样。所以我想帮助解决这个问题。

我的 php cURL POST 请求:

<?php
$url = "http://localhost:8080/TestRest/test/asd";

$params = "param1=val1&param2=val2";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, urlencode($params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($ch);
curl_close($ch);

echo $result;
?>

我的 Java 网络服务:

@Path("/test")
public class Streams {

    @POST
    @Path("/asd")
    @Produces(MediaType.TEXT_PLAIN)
    @Consumes({"application/x-www-form-urlencoded"})
    public String addStream(@FormParam("param1") String param1, 
                        @FormParam("param2") String param2) {
    return "param1 = "+param1;
    }
}

由于某种原因 param1 为空。我究竟做错了什么?

4

1 回答 1

0

我正在四处走动,并说您的问题可能源于此:

urlencode($params);

例如:a=1&b=2&c=3完全有效。

urlencode('a=1&b=2&c=3')去这个:a%3D1%26b%3D2%26c%3D3你的网络服务可能不明白你正在传递什么。它正在寻找a=...&b=...&c=...而你没有给它任何东西。

尝试离开urlencode()并查看它是否有效。如果是这样,并且您仍然希望确保内容this&this正确编码,那么您将需要解析 url 参数,对其进行编码,然后将它们重新组合为发布数据。

于 2013-09-12T17:21:49.420 回答