gpt4 book ai didi

Groovy URLConnection 获取 4xx 响应的响应

转载 作者:行者123 更新时间:2023-12-04 01:52:43 26 4
gpt4 key购买 nike

我有一个 Groovy 脚本,它使用 URLConnection 来处理 GET 请求(在本例中是为了获取身份验证 token );

URLConnection loginURI = new URL("www.myaddress.fish").openConnection();
loginURI.setRequestProperty("Authorization","me:you");
response = loginURI.getInputStream();

没什么复杂的,当响应为 200 或类似值时,此代码可以正常工作。响应包含我需要取得进展的详细信息。

但是,有时响应是 4xx 响应(最常见的是来自无效授权 header 的 400 Bad Request),并且通过 SOAPUI 或类似的方式运行相同的请求,我可以看到响应正文包含有用的信息(EG 'your用户名不正确')。我希望能够捕获有用的信息进行处理,但我不确定该怎么做。

我已经尝试过传统的“try/catch”想法,但我得到的是 Java 异常而不是响应主体。我愚蠢地尝试了一个沼泽标准

println response.text

在 catch 段中,但这根本不起作用。假设响应正文存储在某个地方,我该如何读取它?

最佳答案

看起来我看到的错误不是因为 4xx 响应,而是因为当请求返回错误代码时 getInputStream() 无效。我现在所做的是首先请求 responseCode(它始终存在),然后取决于代码是什么取决于我是 getInputStream() 还是 getErrorStream()。

在我的例子中,我将代码更改为;

responseCode=loginURI.getResponseCode();
if(responseCode != 200){
response = loginURI.getErrorStream();
}else{
response = loginURI.getInputStream();
}
println "login response:" + response.text;

我可能会将 If 语句更改得更准确一些(200 不是唯一有效的响应),但因为我只对 200 有效感兴趣,所以它对我有用。

关于Groovy URLConnection 获取 4xx 响应的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52180421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com