HttpURLConnection GET call with idle parameters

I have a very simple code that does not work.

HttoCon Class:

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()); } } 

Error tracing:

 {"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 

Note:

If I hit the URL directly in the browser, it works fine.

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

UPDATE:

Using curl:

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

The above curl does not work, and the exception is the same -

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

This curl works great.

+5
source share
2 answers

You create a string containing parameters, which is then appended to the URL. Create an Obj URL from this. For instance: -

 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); 

Then you create a connection, as in the original example.

+5
source

openConnection establish a connection and issue a GET . Subsequent GET parameter settings in the returned URLConnection object are ignored because the URL is already open.

Add parameters to the URL as query string parameters in the same way as the link above and open this link

or

try sending parameters to the server (which is even better)

+2
source

All Articles