小编jpt*_*er2的帖子

如何在 Java 中更改客户端 TLS 首选项?

我正在尝试向 Java 中的端点发出 POST 请求,当我尝试发送请求时,出现以下错误:

Caused by: javax.net.ssl.SSLHandshakeException: The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止

Map<Object, Object> data = new HashMap<>();
data.put("username","foo");
data.put("password","bar");

String url = "https://google.com";

HttpRequest request = HttpRequest.newBuilder()
     .POST(buildFormDataFromMap(data))
     .uri(URI.create(url))
     .build();

try{
     HttpResponse<String> response =  httpClient.send(request, 
          HttpResponse.BodyHandlers.ofString());
     System.out.println(response.statusCode());
     System.out.println(response.body());
} catch (Exception e){
     e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

然后当我运行代码时,发送请求/制作响应对象时会抛出错误。我的问题是,如果服务器与客户端的 TLS 首选项不同,我该如何更改 Java 中的首选项,以便它仍然可以发出请求?

sslhandshakeexception tls1.2 tls1.0

7
推荐指数
1
解决办法
1万
查看次数

如何使用流将二维int数组转换为单个字符串?

我正在尝试将二维int数组转换为单个int,其中每个数字和每个使用流的单个数组之后的换行符之间都有一个空格。

我已经使用mapToObj轻松地对一维数组完成了此操作,但是当流是由数组而不是int组成时,这不是很容易。

int[] a = {1, 2, 3, 4};

String[] strArray = Arrays.stream(a).mapToObj(String::valueOf).toArray(String[]::new);

String joined = String.join(" ", strArray);
Run Code Online (Sandbox Code Playgroud)

a会映射到1 2 3 4这里。我想要的是像

int[][] a = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

映射到

1 2 3
4 5 6 
7 8 9
Run Code Online (Sandbox Code Playgroud)

如何获得与相似的东西joined,但具有二维数组并且仍在使用流?

java string java-stream

0
推荐指数
1
解决办法
95
查看次数