如何将Java JSON对象数据发送到Android API请求,求可行开发方案
Android端对接Java Web服务JSON接口方案
你提到的搭建Java API返回JSON响应的方案本身是当前场景下最优的选择,不需要额外找其他更复杂的方案,大部分情况下你甚至不需要完全新搭一套服务,直接在现有Java Web应用上扩展接口即可,具体落地可以参考以下路径:
方案1:复用现有Java Web扩展JSON接口(首推)
- 核心优势:无需新增服务节点,直接复用现有业务逻辑、鉴权体系,后续维护成本最低
- 如果你用的是Spring Boot/Spring MVC体系的Web应用,只需要新增
@RestController注解的接口类即可,框架会自动完成JSON序列化/反序列化:
@RestController @RequestMapping("/api/android") public class AndroidApiController { // 接收Android端的JSON请求参数,返回JSON响应 @PostMapping("/getData") public CommonResult getBizData(@RequestBody RequestParam param) { // 直接调用现有业务层代码获取数据,无需重复开发 return bizService.queryData(param); } }
- 如果你用的是非Spring的传统Java Web应用,可以新增一个Servlet专门处理Android端请求,手动引入Jackson/Fastjson等工具完成JSON处理即可,不需要改造原有业务代码。
方案2:Android端发送JSON请求的通用实现
Android侧发送JSON请求不需要复杂封装,用主流的OkHttp/Retrofit框架即可实现,OkHttp示例代码如下:
// 1. 构造请求参数JSON val requestJson = JSONObject().apply { put("userId", 1001) put("queryCondition", "all") }.toString() // 2. 构造JSON请求体 val requestBody = RequestBody.create( MediaType.parse("application/json;charset=utf-8"), requestJson ) // 3. 发起请求 val request = Request.Builder() .url("http://你的Java服务地址/api/android/getData") .post(requestBody) .build() OkHttpClient().newCall(request).enqueue(object : Callback { override fun onFailure(call: Call, e: IOException) { // 处理请求异常逻辑 } override fun onResponse(call: Call, response: Response) { val respJson = response.body()?.string() // 解析返回的JSON数据即可 } })
如果使用Retrofit,只需要在接口定义时给参数添加@Body注解,框架会自动将业务对象转换为JSON请求体。
特殊场景可选替代方案
如果现有Java Web服务完全不允许修改代码,可以临时搭一个轻量代理服务,代理Android端的请求,将原有Web接口返回的非JSON格式数据转换为JSON后再返回给Android端,该方案仅适合临时过渡,会额外增加维护成本,不建议长期使用。
注意:需要在Java服务端配置跨域规则,允许Android端的访问来源,否则会出现请求被拦截的问题
内容的提问来源于stack exchange,提问作者Shakir
相关产品推荐
相关产品推荐

