在开发的时候,需要调用第三方接口, 使用RestTemplate去调用,结果发现一直返回报错, 跟别人联调也说没有收到我发过去的请求参数.
String url = "http://api.xxx.xxx";
Map map = new HashMap<>();
map.put("name","zgd");
map.put("age","18");
String result = restTemplate.getForObject(apiUrl,String.class,map );
发现一直拿不到name和age
最后发现, restTemplate发送Get请求, 需要将请求Url用占位符
String url = "http://api.xxx.xxx?name={name}&age={age}";
这样就可以了
2019/03/30 更新
我找到一种比较优雅的方式:
public static void main(String[] args) {
String url = "http://www.baidu.com";
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);
String url2 = builder.queryParam("name", "zgd").build().encode().toString();
System.out.println("url2 = " + url2);
Map<String,String> param = Maps.newHashMap();
param.put("name","zzz");
param.put("age","123");
param.entrySet().stream().forEach(o -> builder.queryParam(o.getKey(),o.getValue()));
String url3 = builder.build().encode().toString();
System.out.println("url3 = " + url3);
在开发的时候,需要调用第三方接口, 使用RestTemplate去调用,结果发现一直返回报错, 跟别人联调也说没有收到我发过去的请求参数.String url = &quot;http://api.xxx.xxx&quot;;//模拟请求参数Map map = new HashMap&amp;lt;&amp;gt;();map.put(&quot;name&quot;,&quot;zgd&quot;);map.put(&am
Spring中RestTemplate get带参数请求,接受不到请求参数处理。该方法可以自动组装参数
public class UrlParametersUtils {
* 拼接get参数
* @param baseUrl baseUrl 例如 https://www.baidu.com/
* @param parameterMap parameter map
public static URI handleUrlParameters(String
restTemplate发送https请求报错I/O error on POST request for “xxxx“: Remote host terminated the handshake解决
目前遇到一个对接需求,对方公司提供了一个接口,请求方法为GET,传参是在body中的json格式数据。
针对这个需求,在postman中进行测试,请求成功,后续需要用java进行接口调用。
首先,我们要了解 RestTemplate 请求方法和 HTTP 请求方法的对应关系。
spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接, 我们只需要传入url及返回值类型即可。相较于之前常用的HttpClient,RestTemplate是一种更优雅的调用RESTful服务的方式。
2.添加配置文件
@Configuration
public class RestTemplateConfig {
* 没有实例化RestTemplate时,初始化R
String url = "http://localhost:8081/aa";
//headers
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.add("api-version", "1.0");
//b...
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.w...
Map&amp;amp;amp;amp;amp;lt;String, String&amp;amp;amp;amp;amp;gt; params = new HashMap&amp;amp;amp;amp;amp;lt;String, String&amp;amp;amp;amp;amp;gt;();
params.put(&amp;amp;amp;amp;quot;sex&amp;am
可以使用RestTemplate的`getForObject()`或`getForEntity()`方法来发送GET请求,带上参数可以在URL后面添加查询参数的方式。
例如,假设我们要发送一个GET请求到`https://example.com/api/users`,并带上参数`name=John&age=30`,可以这样写:
```java
RestTemplate restTemplate = new RestTemplate();
String url = "https://example.com/api/users?name=John&age=30";
User[] users = restTemplate.getForObject(url, User[].class);
其中,`User`是我们定义的实体类,用于接收响应数据。
如果我们想要更灵活地构造URL,可以使用`UriComponentsBuilder`来构造带有查询参数的URL:
```java
RestTemplate restTemplate = new RestTemplate();
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("https://example.com/api/users")
.queryParam("name", "John")
.queryParam("age", 30);
String url = builder.toUriString();
User[] users = restTemplate.getForObject(url, User[].class);