You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java应用向C# Web API发送JSON格式POST数据遇阻求助

完成POST请求添加房屋数据的可行方案

没问题,我来帮你搞定这个Java应用向Web服务器发送房屋数据的POST请求!下面针对你提到的场景,给你几个实用的实现方案,包括补全你已经开始写的Groovy客户端代码,以及Java原生、Spring生态下的常见写法。

一、补全你现有Groovy HttpClient代码(假设用的是Micronaut或类似HTTP客户端)

从你给出的代码片段来看,应该是在Groovy环境下用内置的HTTP客户端。这里我们把请求补全,核心是指定POST方法、设置JSON请求头、把House对象序列化为JSON作为请求体:

// 先把House对象转成JSON字符串(如果框架没有自动序列化,用Jackson的ObjectMapper)
ObjectMapper mapper = new ObjectMapper()
String houseJson = mapper.writeValueAsString(ap)

// 补全POST请求
def response = server.httpClient.requestSpec { spec ->
    spec.method(HttpMethod.POST)
        .uri("/api/houses") // 替换成你的服务器实际接口路径
        .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
        .body(houseJson)
}

// 处理响应
if (response.status == HttpStatus.OK) {
    println("房屋数据添加成功!")
} else {
    println("请求失败,状态码: ${response.status}")
}

二、Java原生HttpURLConnection实现(无第三方依赖)

如果你的项目不想引入额外框架,用JDK自带的HttpURLConnection就能搞定:

import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import com.fasterxml.jackson.databind.ObjectMapper;

public class HousePostExample {
    public static void main(String[] args) throws Exception {
        // 你的House对象
        String hStr = "{\"id\":2,\"name\":\"John\",\"height\":36.72342538,\"width\":2.99999998,\"frequency\":871.07,\"idList\":[],\"level\":0.0}";
        ObjectMapper toJsonMap = new ObjectMapper();
        House ap = toJsonMap.readValue(hStr, House.class);

        // 服务器接口URL
        URL url = new URL("http://your-server-url/api/houses");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        
        // 设置请求属性
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setDoOutput(true); // 允许写入请求体

        // 序列化House对象为JSON并写入请求体
        ObjectMapper mapper = new ObjectMapper();
        try (OutputStream os = conn.getOutputStream()) {
            byte[] input = mapper.writeValueAsBytes(ap);
            os.write(input, 0, input.length);
        }

        // 获取响应状态
        int responseCode = conn.getResponseCode();
        if (responseCode == HttpURLConnection.HTTP_OK) {
            System.out.println("房屋数据添加成功!");
        } else {
            System.out.println("请求失败,状态码: " + responseCode);
        }
        conn.disconnect();
    }
}

三、Spring项目用RestTemplate实现(最常用的Spring方案)

如果你的项目是Spring Boot或Spring框架,用RestTemplate会更简洁:

import org.springframework.web.client.RestTemplate;
import com.fasterxml.jackson.databind.ObjectMapper;

public class SpringHousePostExample {
    public static void main(String[] args) {
        // 初始化RestTemplate
        RestTemplate restTemplate = new RestTemplate();
        
        // 你的House对象
        String hStr = "{\"id\":2,\"name\":\"John\",\"height\":36.72342538,\"width\":2.99999998,\"frequency\":871.07,\"idList\":[],\"level\":0.0}";
        ObjectMapper toJsonMap = new ObjectMapper();
        House ap = toJsonMap.readValue(hStr, House.class);

        // 发送POST请求
        String serverUrl = "http://your-server-url/api/houses";
        try {
            // 如果服务器返回响应对象,可以替换为对应的类型
            String response = restTemplate.postForObject(serverUrl, ap, String.class);
            System.out.println("房屋数据添加成功,响应: " + response);
        } catch (Exception e) {
            System.err.println("请求失败: " + e.getMessage());
        }
    }
}

注意事项

  • 确保你的House类有正确的Jackson注解(比如@JsonProperty),如果字段名和JSON不一致的话,避免序列化/反序列化出错。
  • 替换代码中的your-server-url和接口路径/api/houses为你实际的服务器地址和接口。
  • 如果服务器需要认证,记得在请求头里加入对应的授权信息(比如Authorization: Bearer xxx)。

内容的提问来源于stack exchange,提问作者mightynifty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:31:36