httpurlconnection post请求获取返回码为400的异常信息

小灰灰one 2018-05-07 10:36:14

原curl请求是这样,会返回400,在java里使用httpurlconnection实现获取400的错误信息时报异常,如下图,该怎么做?

代码如下:
try {
SSLContext sslContext=SSLContext.getInstance("SSL");
TrustManager[] tm={new MyX509TrustManager()};
MyX509TrustManager.trustAllHttpsCertificates();
HttpsURLConnection.setDefaultHostnameVerifier(hv);
sslContext.init(null, tm, new java.security.SecureRandom());
URL url = new URL(baseurl+httpurl);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoInput(true);
// 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。
// 设置请求头部信息
connection.setRequestProperty("xxx", "xxx");
connection.setRequestProperty("xxx", "xxx");
os = connection.getOutputStream();
os.write(param.getBytes());
System.out.println(connection.getResponseCode());
is = connection.getInputStream();
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
StringBuffer sbf = new StringBuffer();
String temp = null;
// 循环遍历一行一行读取数据
while ((temp = br.readLine()) != null) {
sbf.append(temp);
sbf.append("\r\n");
}
result = sbf.toString();


} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 关闭资源
if (null != br) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != os) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != is) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// 断开与远程地址url的连接
connection.disconnect();
}
return result;
}
请各位帮忙指点下,谢谢
...全文
4335 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2019-01-07
  • 打赏
  • 举报
回复
通过 getErrorStream 获取错误信息,得以解决问题,谢谢楼主!
Xy_718 2018-12-26
  • 打赏
  • 举报
回复
谢谢!!!!!!!
耀. 2018-07-20
  • 打赏
  • 举报
回复
谢谢楼主 找了两天的问题。。。在这里解决了!
小灰灰one 2018-05-07
  • 打赏
  • 举报
回复 1
已解决 if (connection.getResponseCode() >= 400 ) { is = connection.getErrorStream(); } else{ is = connection.getInputStream(); } br = new BufferedReader(new InputStreamReader(is, "UTF-8")); StringBuffer sbf = new StringBuffer(); String temp = null; // 循环遍历一行一行读取数据 while ((temp = br.readLine()) != null) { sbf.append(temp); sbf.append("\r\n"); } result = sbf.toString();
小灰灰one 2018-05-07
  • 打赏
  • 举报
回复
顶一下,不能沉

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧