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

Http请求中的错误消息

孟杰
2023-03-14

我使用下面的代码发出http请求,但当抛出异常时,我无法获取每个字段的错误消息。在postman中,它确实显示了正确的错误消息:

   HttpsURLConnection con = (HttpsURLConnection) new URL(url).openConnection();
    con.setSSLSocketFactory(sc.getSocketFactory());
    con.setDoOutput(true);


    con.setRequestProperty("Authorization","Basic KEY")
    con.setRequestProperty("Content-Length", Integer.toString(data.length()));
    try {
        con.getOutputStream().write(data.getBytes("UTF-8"));
        final BufferedReader rd = new BufferedReader(new InputStreamReader(con.getInputStream()));
         stringBuffer = new StringBuffer();


        while ((line = rd.readLine()) != null) {
            stringBuffer.append(line);
        }
        rd.close();
    }catch(Exception e){
        println stringBuffer.toString()
        throw new Exception("Some error occurred " + e.message)
    }

它只是显示消息“服务器返回的HTTP响应代码:422表示URL:https://test.api.promisepay.com/users/35

然而,在《邮递员》中,它显示:

{
    "errors": {
        "mobile": [
            "already exists"
        ]
    }
}

共有1个答案

汲品
2023-03-14

您不能使用输入流读取错误,而应该使用错误流。

下面是一个示例片段:

将数据写入输出流后,您应该检查返回了什么响应代码:

int respCode=con.getResponseCode();

然后检查返回的响应代码是否为200,如果不是,则表示出现了一些错误:

InputStream is=null;
 if(respCode==200){
    is = con.getInputStream();                    
 } else if (urlConnection.getErrorStream() != null) {
    is = con.getErrorStream();
 }

现在您可以更改读取错误的代码:

final BufferedReader rd = new BufferedReader(new 
InputStreamReader(is));
stringBuffer = new StringBuffer();
while ((line = rd.readLine()) != null) {
   stringBuffer.append(line);
}
rd.close();

希望这可能会有所帮助!

 类似资料:
  • 问题内容: 我有一段这样的代码 当我输入的查询超过一个词,例如“狗”时,出现以下错误。 谁能指出我做错了什么?提前致谢。 问题答案: “狗”返回400错误的原因是因为您没有转义URL的字符串。 如果您这样做: 会的。 但是,我强烈建议您使用请求,而不要使用urllib / urllib2 / httplib。这要容易得多,它将为您处理所有这一切。 这是与python请求相同的代码:

  • 我已经按照文档中关于生成JWT令牌的所有说明进行了操作,但只接收“坏请求”作为响应。。。 当我尝试运行eg-01-php-jwt时,也会发生同样的情况。我正在使用DocuSign演示环境,并使用Postman和curl模拟请求 我正在做的步骤是: 将授权uri生成为https://account-d.docusign.com/oauth/auth?response_type=code 我的(更新的

  • 问题内容: 我正在使用ckeditor格式化我的内部一些数据 现在,当我尝试使用这种方式发布数据时, 我得到错误 HTTP错误414。请求URL太长。 我在这里遇到错误:http : //iranfairco.com/example/errorLongUrl.aspx 尝试单击该页面左下方的“ 编辑文本” 按钮。 为什么会这样呢?我该如何解决? 问题答案: 根据这个问题,URL的最大实际长度是20

  • 这里是android开发新手。我正在尝试将一个.gpx文件发布到我的web数据库中。但是,我收到http响应错误415。我知道415意味着不正确的内容类型,我尝试使用的API有这段代码…谢谢你的提示! 这是我的Http请求类 这是我的活动 这是我从httpbin得到的响应 /*I/system.out:服务器回复: I/system.out:{ I/system.out:“args”:{}, i/

  • 我是新来的。我正在创建注册功能,但当我发布请求时,它给我的错误是:“发布有效请求”。请你检查一下我的代码,告诉我我做错了什么。 服务 注册组件 注册HTML 用户界面

  • 我正试图通过新的Java11HttpClient取消http请求。 这是我的测试代码: 我预计,该请求任务将在 行调用后立即被取消。因此,控制台中最后打印的行应该是 但是,当我运行这段代码时,我看到类似这样的内容: 这意味着,在我取消请求后,请求任务仍在运行…所以,这是取消请求的正确方法吗? UPD 取消请求的正确方法是(正如daniel所建议的,UPD2:在方法调用中避免NPE):