Java 如何通过SpringREST模板使用原始数据进行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

有人能告诉我如何用下图中的原始数据参数发送POST请求吗

我尝试了以下代码,但它不起作用

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