当前位置: 首页 > article >正文

HttpURLConnection实现

我有一个接口 http://ip:port/Others/airportnew/,采用post方法调用,采用body方式传值,其body内容为{"data": {"data": {"image": ""}}
},现在我需要在java中调用这个接口,帮我写调用方法和测试的main方法

以下是一个使用Java调用该接口的完整示例,包括HttpURLConnection实现和测试main方法:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;public class AirportApiCaller {// 调用接口的核心方法public static String callAirportApi(String apiUrl, String jsonInput) throws IOException {// 创建URL对象URL url = new URL(apiUrl);HttpURLConnection connection = (HttpURLConnection) url.openConnection();try {// 设置请求参数connection.setRequestMethod("POST");connection.setRequestProperty("Content-Type", "application/json");connection.setRequestProperty("Accept", "application/json");connection.setDoOutput(true);connection.setConnectTimeout(5000);  // 5秒连接超时connection.setReadTimeout(10000);   // 10秒读取超时// 发送请求体try (OutputStream os = connection.getOutputStream()) {byte[] input = jsonInput.getBytes(StandardCharsets.UTF_8);os.write(input, 0, input.length);}// 获取响应代码int responseCode = connection.getResponseCode();// 读取响应内容try (BufferedReader br = new BufferedReader(new InputStreamReader((responseCode == HttpURLConnection.HTTP_OK) ? connection.getInputStream() : connection.getErrorStream(), StandardCharsets.UTF_8))) {StringBuilder response = new StringBuilder();String responseLine;while ((responseLine = br.readLine()) != null) {response.append(responseLine.trim());}// 返回响应结果(包含状态码和内容)return String.format("HTTP %d: %s", responseCode, response.toString());}} finally {connection.disconnect(); // 确保断开连接}}public static void main(String[] args) {// 接口地址String apiUrl = "http://ip:port/Others/airportnew/";// 构建JSON请求体String jsonBody = "{\"data\":{\"data\":{\"image\":\"\"}}}";try {System.out.println("正在调用机场接口...");String response = callAirportApi(apiUrl, jsonBody);System.out.println("接口响应: " + response);} catch (IOException e) {System.err.println("调用接口时发生错误:");e.printStackTrace();}}
}

使用说明:

  1. 核心方法callAirportApi

    • 接收API地址和JSON请求体
    • 设置正确的HTTP头(Content-Type: application/json)
    • 处理请求和响应流
    • 返回包含状态码和响应内容的字符串
  2. 测试方法

    • 在main方法中直接提供接口URL和请求体
    • 自动处理成功/失败的响应
    • 包含基本的错误处理

可能的响应处理:

如果接口返回403错误(如之前问题所述),你可能需要添加认证信息。以下是添加认证头的修改示例:

// 在设置请求头的部分添加认证信息
connection.setRequestProperty("Authorization", "Bearer your_token_here");
// 或者
connection.setRequestProperty("x-ais-token", "your_token_value");

依赖说明:

  • 纯Java标准库实现(java.net包),无需额外依赖
  • 兼容Java 8及以上版本

常见问题排查:

  1. 如果遇到连接超时:

    • 检查IP/端口是否可达(使用 telnet 172.22.1.65 8088 测试)
    • 调整 setConnectTimeout()setReadTimeout()
  2. 如果返回403:

    • 检查是否需要添加认证头(如x-ais-token)
    • 确认服务器IP白名单设置
  3. 如果JSON格式错误:

    • 使用在线JSON校验工具检查 jsonBody 格式
    • 确保没有中文引号等非法字符

建议先用Postman测试确保接口可用,再用此Java代码集成到你的应用中。

http://www.lryc.cn/news/2403882.html

相关文章:

  • day029-Shell自动化编程-计算与while循环
  • Linux命令基础(2)
  • vue3 + vite实现动态路由,并进行vuex持久化设计
  • ThingsCloud事物云平台搭建-微信小程序
  • 为什么 uni-app 开发的 App 没有明显出现屏幕适配问题Flutter 开发的 App 出现了屏幕适配问题
  • 学习路之php--性能优化
  • GC1808:高性能24位立体声音频ADC芯片解析
  • echarts使用graph、lines实现拓扑,可以拖动增加effect效果
  • 产品经理课程(九)
  • 二.单例模式‌
  • 从零开始开发纯血鸿蒙应用之网络检测
  • 向 AI Search 迈进,腾讯云 ES 自研 v-pack 向量增强插件揭秘
  • 接IT方案编写(PPT/WORD)、业务架构设计、投标任务
  • PostgreSQL 的扩展pageinspect
  • Unity——QFramework框架 内置工具
  • 【win | docker开启远程配置】使用 SSH 隧道访问 Docker的前操作
  • 股指期货波动一个点多少钱?
  • Kafka 快速上手:安装部署与 HelloWorld 实践(一)
  • NGINX `ngx_stream_core_module` 模块概览
  • iOS、Android、鸿蒙、Web、桌面 多端开发框架Kotlin Multiplatform
  • 探索C++标准模板库(STL):String接口的底层实现(下篇)
  • Flutter知识点汇总
  • vue组件的data为什么是函数?
  • AI图片售卖:是暴利新风口还是虚幻泡沫?哪些平台适合售卖AI图片
  • ​线性注意力 vs. 传统注意力:效率与表达的博弈新解
  • YOLO在QT中的完整训练、验证与部署方案
  • Vue在线预览excel、word、ppt等格式数据。
  • 增量式网络爬虫通用模板
  • 【JVM】三色标记法原理
  • 【uniapp开发】picker组件的使用