我有一个 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/