0

I am making rest api call in my spring project. The url is : https://testinfo.com/user-api/rest/userinfo?uploadStartTime=1476882000&uploadEndTime=1476907200

Here is my code:

public String getUserData(String uplaodStartTime,String uplaodEndTime) throws IOException{
        String user_url = https://testinfo.com/user-api/rest/userinfo
        String url = user_url + "?" + "uploadStartTime" + "=" +uplaodStartTime + "&"
                + "uploadEndTime" + "=" + uplaodEndTime;

        URL obj = new URL(url);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
        con.setRequestMethod("GET");
        int responseCode = con.getResponseCode();       
        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();
        return response.toString();

    }

Is there any best way to make a rest api call without hard coding the url parameters?

madhu
  • 129
  • 2
  • 6
  • 15
  • Possible duplicate of [Spring RESTful URL call passing parameters](http://stackoverflow.com/questions/23275524/spring-restful-url-call-passing-parameters) – αƞjiβ Oct 20 '16 at 17:05

2 Answers2

1

How about using RestTemplate?

final String uri = "http://localhost:8080/project/test";

RestTemplate rt = new RestTemplate();
String result = rt.getForObject(uri, String.class);

System.out.println(result);

if there are any parameters, use mapped object.

final String uri = "http://localhost:8080/project/test";

RestTemplate rt = new RestTemplate();

AnyVO any = new AnyVO(1, "Adam", "010-1234-1234", "test@email.com");
AnyVO result = rt.postForObject( uri, any, AnyVO.class);

System.out.println(result);
0

preparation:

    RestTemplate rt = new RestTemplate(); // this can be static for performance
    String url = "https://host:port/path1/path2?stringVar1=
{var1value}&floatVar2={var2value}";

then, way A, embedding values into url by their order:

    MyClass result = rt.getForObject(url, MyClass.class, "SomeString", 123.4f);

or, way B, replacing values in url by their keys:

    Map<String, Object> params = new HashMap<>(2);
    params.put("var1value", "SomeString");
    params.put("var2value", 123.4f);
    MyClass result = rt.getForObject(url, MyClass.class, params);

in both cases, url becomes https://host:port/path1/path2?stringVar1=SomeString&floatVar2=123.4

Volo Myhal
  • 74
  • 5