繁体   English   中英

如何在 spring 中使用参数进行 Rest Api 调用

[英]How to make Rest Api call with parameters in spring

我正在我的春季项目中进行休息 api 调用。 网址是: https : //testinfo.com/user-api/rest/userinfo?uploadStartTime=1476882000&uploadEndTime=1476907200

这是我的代码:

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

    }

有没有最好的方法可以在不硬编码 url 参数的情况下进行 rest api 调用?

如何使用RestTemplate?

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

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

System.out.println(result);

如果有任何参数,请使用映射对象。

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

准备:

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

然后,方式 A,按顺序将值嵌入到 url 中:

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

或者,方式 B,用它们的键替换 url 中的值:

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

在这两种情况下, url 都变为https://host:port/path1/path2?stringVar1=SomeString&floatVar2=123.4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM