Java HttpURLConnection GET调用参数不起作用

Java HttpURLConnection GET调用参数不起作用,java,url,httpurlconnection,Java,Url,Httpurlconnection,我有一个非常简单的代码,它不工作 类别HttoCon: package test; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder;

我有一个非常简单的代码,它不工作

类别HttoCon:

package test;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;

public class HttpCon {


public static void main(String[] args) {
    try {
        sendGet();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
    // HTTP GET request
        private static void sendGet() throws Exception {

            String url = "http://myweb.com/public/resource/data/stream";

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

            // optional default is GET
            con.setRequestMethod("GET");


            //add request header
            con.setRequestProperty("begin", "1430295300000");
            con.setRequestProperty("end", "1430297279988");
            con.setRequestProperty("id", "140621");
            con.setRequestProperty("time", "FIFTEEN_MINUTE");

            int responseCode = con.getResponseCode();
            System.out.println("\nSending 'GET' request to URL : " + url);
            System.out.println("Response Code : " + responseCode);

            BufferedReader in = new BufferedReader(
                    new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

            //print result
            System.out.println(response.toString());

        }
}
{"fault":{"exceptionType":"MissingServletRequestParameterException","host":"12.205.101.123","cause":"Required Long parameter 'id' is not present","status":"400","query":"/public/resource/data/stream","stackTrace":"org.springframework.web.bind.MissingServletRequestParameterException: Required Long parameter 'id' is not present\n\tat org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.raiseMissingParameterException(AnnotationMethodHandlerAdapter.java:774)\n\tat org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveRequestParam(HandlerMethodInvoker.java:509)\n\tat 
错误跟踪:

package test;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;

public class HttpCon {


public static void main(String[] args) {
    try {
        sendGet();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
    // HTTP GET request
        private static void sendGet() throws Exception {

            String url = "http://myweb.com/public/resource/data/stream";

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

            // optional default is GET
            con.setRequestMethod("GET");


            //add request header
            con.setRequestProperty("begin", "1430295300000");
            con.setRequestProperty("end", "1430297279988");
            con.setRequestProperty("id", "140621");
            con.setRequestProperty("time", "FIFTEEN_MINUTE");

            int responseCode = con.getResponseCode();
            System.out.println("\nSending 'GET' request to URL : " + url);
            System.out.println("Response Code : " + responseCode);

            BufferedReader in = new BufferedReader(
                    new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

            //print result
            System.out.println(response.toString());

        }
}
{"fault":{"exceptionType":"MissingServletRequestParameterException","host":"12.205.101.123","cause":"Required Long parameter 'id' is not present","status":"400","query":"/public/resource/data/stream","stackTrace":"org.springframework.web.bind.MissingServletRequestParameterException: Required Long parameter 'id' is not present\n\tat org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.raiseMissingParameterException(AnnotationMethodHandlerAdapter.java:774)\n\tat org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveRequestParam(HandlerMethodInvoker.java:509)\n\tat 
注意:

package test;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;

public class HttpCon {


public static void main(String[] args) {
    try {
        sendGet();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
    // HTTP GET request
        private static void sendGet() throws Exception {

            String url = "http://myweb.com/public/resource/data/stream";

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

            // optional default is GET
            con.setRequestMethod("GET");


            //add request header
            con.setRequestProperty("begin", "1430295300000");
            con.setRequestProperty("end", "1430297279988");
            con.setRequestProperty("id", "140621");
            con.setRequestProperty("time", "FIFTEEN_MINUTE");

            int responseCode = con.getResponseCode();
            System.out.println("\nSending 'GET' request to URL : " + url);
            System.out.println("Response Code : " + responseCode);

            BufferedReader in = new BufferedReader(
                    new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

            //print result
            System.out.println(response.toString());

        }
}
{"fault":{"exceptionType":"MissingServletRequestParameterException","host":"12.205.101.123","cause":"Required Long parameter 'id' is not present","status":"400","query":"/public/resource/data/stream","stackTrace":"org.springframework.web.bind.MissingServletRequestParameterException: Required Long parameter 'id' is not present\n\tat org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.raiseMissingParameterException(AnnotationMethodHandlerAdapter.java:774)\n\tat org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveRequestParam(HandlerMethodInvoker.java:509)\n\tat 
如果我直接在浏览器中点击url,它可以正常工作

更新:

package test;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;

public class HttpCon {


public static void main(String[] args) {
    try {
        sendGet();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
    // HTTP GET request
        private static void sendGet() throws Exception {

            String url = "http://myweb.com/public/resource/data/stream";

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

            // optional default is GET
            con.setRequestMethod("GET");


            //add request header
            con.setRequestProperty("begin", "1430295300000");
            con.setRequestProperty("end", "1430297279988");
            con.setRequestProperty("id", "140621");
            con.setRequestProperty("time", "FIFTEEN_MINUTE");

            int responseCode = con.getResponseCode();
            System.out.println("\nSending 'GET' request to URL : " + url);
            System.out.println("Response Code : " + responseCode);

            BufferedReader in = new BufferedReader(
                    new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

            //print result
            System.out.println(response.toString());

        }
}
{"fault":{"exceptionType":"MissingServletRequestParameterException","host":"12.205.101.123","cause":"Required Long parameter 'id' is not present","status":"400","query":"/public/resource/data/stream","stackTrace":"org.springframework.web.bind.MissingServletRequestParameterException: Required Long parameter 'id' is not present\n\tat org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.raiseMissingParameterException(AnnotationMethodHandlerAdapter.java:774)\n\tat org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveRequestParam(HandlerMethodInvoker.java:509)\n\tat 
使用curl:

curl -X GET http://myweb.com/public/resource/data/stream?begin=1430295300000&end=1430297279988&id=140621&time=FIFTEEN_MINUTE
上述旋度不起作用,例外情况相同-

curl -X GET 'http://myweb.com/public/resource/data/stream?begin=1430295300000&end=1430297279988&id=140621&time=FIFTEEN_MINUTE'

这个卷曲效果很好。

创建一个包含参数的字符串,然后将其附加到URL上。从该文件创建URL Obj。例如:

String this.url = "http://myweb.com/public/resource/data/stream";
this.url += "?begin=1430295300000&end=1430297279988&id=140621
    &time=FIFTEEN_MINUTE"; 
this.urlObj = new URL(this.url);

然后按照原始示例创建连接。

openConnection
将建立连接并发出
GET
。返回的URLConnection对象上的
GET
参数的后续设置将被忽略,因为URL已经打开

将参数作为查询字符串参数添加到URL,就像上面的链接一样,并打开该链接


尝试将参数发布到服务器(甚至更好)

尝试con.setRequestProperty(“id”,“140621L”);林克似乎没有work@Pratik-我只是为了演示而更改了链接。如果在浏览器中直接点击URL就可以了,那么有什么理由反对像在浏览器中那样直接向请求中添加参数,看起来您已经期望它们出现了?看起来setRequestProperty用于设置“内容类型”和“用户代理”之类的内容。根据我刚才的研究,它不用于设置需要在url上传递给代码的参数。对于你正在做的事情,你想做一些像@CraigParkinson在他的回答中所做的事情。