HTTP调用接口API实现

HTTP调用接口API实现


1.方法一

  • 创建请求对象并使用OkHttpClient发起http请求

  在构建请求体的时候,如果用的实体类去封装的请求体内容,则需要在实体类封装完毕后将其转换为json数据

    // 构建请求体
     JsonRequest jsonRequest = new JsonRequest();
     jsonRequest.setModel("wanx-background-generation-v2");
     Input input = new Input();
     // 设置透明背景的主题头像图片url
     input.setBase_image_url("https://th.bing.com/th/id/R.f381b337");
     // 设置引导图URL
     ///input.setRef_image_url("");
     // 设置引导文本提示词
     input.setRef_prompt("布置多个气球,要求现实美观");
     // 设置负向提示祠,不希望出现的内容
     //input.setNeg_ref_prompt("");
     Parameters parameters = new Parameters();
     // 设置与引导图的相似度,数值越大,相似度越低,0~999
     parameters.setNoise_level("50");
     jsonRequest.setInput(input);
     jsonRequest.setParameters(parameters);
     // 将实体类转换为json格式
     Gson gson = new Gson();
     String jsonBody = gson.toJson(jsonRequest); 

  再通过前面创建的OkHttpClient对象client将请求对象向http发起请求获取响应,最后去解析响应数据里面的json数据,在json数据里面去获取自己想要的内容

try {
       // 执行请求,将请求对象向http发生请求
       Response response = client.newCall(request).execute();
       if (response.isSuccessful()) {
           // 获取响应
           String responseBody = response.body().string();
           // 解析响应里面的json数据
          JsonParser parser = new JsonParser();
           JsonObject jsonResponse = parser.parse(responseBody).getAsJsonObject();
           // 在json数据里面去提取任务ID
           String taskId = jsonResponse.getAsJsonObject("output").get("task_id").getAsString();
           System.out.println("任务已创建,任务ID: " + taskId);
           // 等待任务完成并返回修改后的图片路径
           imageUrl = waitLoadResults(apiKey, taskId);
           System.out.println("最终:"+imageUrl);
       } else {
          // 处理请求失败的情况
           imageUrl = response.message();
       }
   } catch (IOException e) {
       e.printStackTrace();
   }
  • 实现过程细节点

实现的流程基本不变,中途的json数据的转换和提取要仔细

  • 构建请求体的实体类转换为json数据
  // 将实体类jsonRequest转换为json格式
   Gson gson = new Gson();
   String jsonBody = gson.toJson(jsonRequest);
  • 请求响应数据中json数据的解析
   // 解析响应responseBody里面的json数据,jsonResponse就是转换后的json数据
   JsonParser parser = new JsonParser();
   JsonObject jsonResponse = parser.parse(responseBody).getAsJsonObject();
  • 在json数据里面提取对应的信息
   // 在json数据里面去提取任务ID
   String taskId = jsonResponse.getAsJsonObject("output").get("task_id").getAsString();
   System.out.println("任务已创建,任务ID: " + taskId);
  • 提取json数据里面的数组数据([])
   // 因为json格式下results里面的url为数组,所以要用jsonArray
    JsonArray jsonArray = jsonResponse.getAsJsonObject("output").get("results").getAsJsonArray();
    for (int i = 0; i<jsonArray.size();i++){
     JsonObject jsonObject = jsonArray.get(i).getAsJsonObject();
     // 获取图像 URL
     imageUrl = jsonObject.get("url").getAsString();
     }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小修士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值