当前位置: 首页 > 知识库问答 >
问题:

Java HttpClient-将HttpResponse转换为String[]

倪阳飇
2023-03-14

我是java HttpClient的新手,目前正在尝试创建RestServiceApplication,但我无法将HttpResponse转换为字符串数组以访问数组的元素。

package com.example.restservice;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class RestServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(RestServiceApplication.class, args);
    }

}

我已经为应用程序实现了以下控制器,它有不同的方法,每个方法都返回一个字符串数组。

package com.example.restservice;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConfigurationController {
    
    
    @GetMapping("/getlenkertypen")
    public String[] getLenkertypen() {
        String[] lenker = new String[3];
        lenker[0] = "Flatbarlenker";
        lenker[1] = "Rennradlenker";
        lenker[2] = "Bullhornlenker";
        return lenker;
    }
    
    @GetMapping("/getmaterial")
    public String[] getMaterial() {
        String[] material = new String[3];
        material[0] = "Aluminium";
        material[1] = "Stahl";
        material[2] = "Kunststoff";
        return material;
    }
    
    @GetMapping("/getschaltung")
    public String[] getSchaltung() {
        String[] schaltung = new String[3];
        schaltung[0] = "Kettenschaltung";
        schaltung[1] = "Nabenschaltung";
        schaltung[2] = "Tretlagerschaltung";
        return schaltung;
    }
    
    @GetMapping("/getgriff")
    public String[] getGriff() {
        String[] griff = new String[3];
        griff[0] = "Ledergriff";
        griff[1] = "Schaumstoffgriff";
        griff[2] = "Kunststoffgriff";
        return griff;
    }
    
    @GetMapping("/test")
    public String test() {
        String[] griff = new String[3];
        griff[0] = "Ledergriff";
        griff[1] = "Schaumstoffgriff";
        griff[2] = "Kunststoffgriff";
        return "test";
    }
}
package com.example.restservice;

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Scanner;
import java.util.stream.Stream;

public class GetRequest {

    public static void main(String[] args) throws IOException, InterruptedException {

        HttpClient client = HttpClient.newHttpClient();
        
        /*
         * Abfrage Lenkertypen
         */
        
        HttpRequest requestLenkertypen = HttpRequest.newBuilder()
                .uri(URI.create("http://localhost:8081/getlenkertypen"))
                .build();
        
        HttpResponse<Stream<String>> lenkerResponse = client.send(requestLenkertypen,
                HttpResponse.BodyHandlers.ofLines());
        String[] lenkerArray = lenkerResponse.body().toArray(String[]::new);
        System.out.println("Bitte wählen Sie als erstes den Lenker aus: ");
        for (int i = 0; i < lenkerArray.length; i++) {
            System.out.println(lenkerArray[i] + " " + i);
        }
        System.out.println(lenkerArray[0]);
        Scanner scanner = new Scanner(System.in);
        
        int answer = scanner.nextInt();
        System.out.println(answer);
        
        
        HttpRequest requestSchaltung = HttpRequest.newBuilder()
                .uri(URI.create("http://localhost:8081/getschaltung"))
                .build();

        HttpResponse<String> response = client.send(requestSchaltung,
                HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}

通过Google,我发现我需要解析响应JSON,但我不知道如何解析。我从Spring.io下载了项目结构,因此我认为响应返回为JSON,但我对此是新手,任何帮助都将得到支持。

谢谢!

共有1个答案

尉迟浩思
2023-03-14

如果您想要一次得到响应的行,请使用BufferedReader和lines()方法。然而,您真正想要的似乎是解析返回的JSON数据。对此有很多可能性。考虑使用jackson:https://www.baeldung.com/jackson

 类似资料:
  • 当我通过邮差访问API时,我可以下载一个pdf文件。当我通过java代码访问相同的API时,我会在ResponseBody中获得pdf内容。我可以用responsebody内容创建一个新的pdf文件,但当我打开该文件时,它是空白的。

  • 问题内容: 我正在开发一些应用程序,它允许从SD卡中选择图像,将其保存到数据库中并为ImageView设置此值。我需要知道将uri转换为字符串并将字符串转换为uri的方法。现在,我使用了Uri的getEncodedPath()方法,但是例如,此代码不起作用: 因此,我不知道如何将Uri保存到数据库中并根据保存的值创建新的Uri。请帮我修复它。 问题答案: 我需要知道将uri转换为字符串并将字符串转

  • 我觉得很简单。 代码: 错误: Jan12, 2018 8:43:40AMorg.apache.http.impl.execchain.RetryExec执行INFO:处理{tls}请求时捕获的I/O异常(java.net.SocketException)- Jan12, 2018 8:43:40AMorg.apache.http.impl.execchain.RetryExec执行信息:重试对{

  • 问题内容: 如何从float转换为string或从string转换为float? 在我的情况下,我需要在2个值字符串(我从表中获得的值)和我计算出的浮点值之间进行断言。 我尝试从浮动到字符串: 但是断言失败 问题答案: 使用Java的类。 为了进行比较,将字符串转换为float并比较两个float总是更好。这是因为对于一个浮点数,存在多个字符串表示形式,与字符串相比,它们是不同的(例如“ 25”!

  • 问题内容: 我只想编写这样的代码: 我以为可以代表任何类型,所以也可以代表任何类型,现在我知道我错了,是一个整体类型,不能视为。 因此,有人可以帮助我如何使此代码正常工作,或其他解决方案吗? PS :我知道或可以相互转换,但是实际上这并不是我的意图,可能还有另一种类型,而不是and 。 问题答案: 现在我知道我错了,是一个整体类型,不能视为。 是的,那是因为它是它自己的类型(而不是其他任何类型的“

  • 问题内容: 我将日期以这种格式存储在SQLite数据库中: 当我以这种格式检索日期时,除小时外,其他一切都很好。时间总是如此。这是我的输出: 这是代码: 我究竟做错了什么? 问题答案: 我认为您的日期格式没有意义。没有13:00 PM。删除格式末尾的“ aaa”,或将HH转换为hh。 不过,这对我来说很好: 它将打印“ 2010年4月29日星期四CEST”。