Java 如何通过SpringREST模板使用原始数据进行post请求
有人能告诉我如何用下图中的原始数据参数发送POST请求吗 我尝试了以下代码,但它不起作用Java 如何通过SpringREST模板使用原始数据进行post请求,java,api,spring-boot,heap-analytics,Java,Api,Spring Boot,Heap Analytics,有人能告诉我如何用下图中的原始数据参数发送POST请求吗 我尝试了以下代码,但它不起作用 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); JsonObject properties = new JsonObject(); MultiValueMap<String, Stri
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
JsonObject properties = new JsonObject();
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
try {
properties.addProperty("app_id", appId);
properties.addProperty("identity","TestAPI");
properties.addProperty("event", "TestCompleted");
properties.addProperty("testType", t.getTestType());
properties.addProperty("testName",t.getTestName());
properties.addProperty("chapter","");
properties.addProperty("module","");
properties.addProperty("pattern",t.getTestPattern());
HttpEntity<String> request = new HttpEntity<>(
properties.toString(), headers);
// params.add("properties", properties.toString());
restTemplate.postForObject(url, request, String.class);
HttpHeaders=newhttpheaders();
headers.setContentType(MediaType.APPLICATION_JSON);
JsonObject属性=新的JsonObject();
多值映射参数=新的LinkedMultiValueMap();
试一试{
properties.addProperty(“app_id”,appId);
属性。添加属性(“标识”、“测试PI”);
addProperty(“事件”、“测试完成”);
addProperty(“testType”,t.getTestType());
properties.addProperty(“testName”,t.getTestName());
属性。添加属性(“章节”和“);
addProperty(“module”,”);
addProperty(“pattern”,t.getTestPattern());
HttpEntity请求=新HttpEntity(
properties.toString(),headers);
//add(“properties”,properties.toString());
postForObject(url、请求、字符串、类);
有人能帮忙吗?请尝试以下方法:
ResponseEntity<String> result = restTemplate.exchange(url, HttpMethod.POST, request, String.class);
ResponseEntity result=restemplate.exchange(url,HttpMethod.POST,request,String.class);
您是否尝试使用postmaster并首先检查了输出。如果有效,则可以使用post或exchange方法。exchange返回和post不返回。尝试以下操作:
@RestController
public class SampleController {
@RequestMapping("/req")
public String performReqest(){
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
JsonObject properties = new JsonObject();
properties.addProperty("no", "123");
properties.addProperty("name", "stackoverflow");
HttpEntity<String> request = new HttpEntity<>(properties.toString(), headers);
RestTemplate restTemplate = new RestTemplate();
String response = restTemplate.postForObject("http://localhost:4040/student", request, String.class);
return "Response from Server is : "+response;
}
@RequestMapping("/student")
public String consumeStudent(@RequestBody Student student){
System.out.println(student);
return "Hello.."+student.name;
}
}
class Student{
public int no;
public String name;
public Map<String,String> properties;
}
@RestController
公共类SampleController{
@请求映射(“/req”)
公共字符串performReqest(){
HttpHeaders=新的HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
JsonObject属性=新的JsonObject();
财产。添加财产(“编号”、“123”);
addProperty(“名称”、“堆栈溢出”);
HttpEntity请求=新的HttpEntity(properties.toString(),headers);
RestTemplate RestTemplate=新RestTemplate();
字符串响应=restTemplate.postForObject(“http://localhost:4040/student,请求,字符串。类);
return“来自服务器的响应为:”+响应;
}
@请求映射(“/student”)
公共字符串consumerstudent(@RequestBody Student){
系统输出打印(学生);
返回“Hello..”+student.name;
}
}
班级学生{
公共国际编号;
公共字符串名称;
公共地图属性;
}
不要忘记移动Student
类,并使用require getter和setter将所有字段更改为private
。
以上代码仅用于演示目的。如果@request body的结构是static@poojapatil如何创建?您能告诉我一个示例吗?创建一个Dto,其中包含上述字段,以便post使用webclient,例如(client.target(end url).request(MediaType.APPLICATION_JSON).header(如果有头的话).post(Entity.Entity(scheme,MediaType.APPLICATION_JSON));)