我正在构建使用post方法向API发送数据的后端服务器端java应用程序,这个应用程序基于我在Python和C#中给出的示例(控制台应用程序) 。此API具有与各种响应代码相关的特定响应。我尝试使用下面的代码,但响应消息似乎是与响应代码关联的通用系统消息,而不是我正在访问的API上的消息。在Java中检索服务器端HTTP错误消息
System.out.println("Response Code : " + connection.getResponseCode());
System.out.println("Response Message : " + connection.getResponseMessage());
我在C#例子中看到,他们使用引发WebException错误处理,但我不能找到Java等同,如果有,甚至是其中之一。
编辑:这是我用403获得,在Python示例中的错误,它返回一个自定义的响应
Exception in thread "main" java.io.IOException: Server returned HTTP response code: 403 for URL: https://[redacted]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1926)
at sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1921)
at java.security.AccessController.doPrivileged(Native Method)
at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1920)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1490)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
at javaapplication1.JavaApplication1.main(JavaApplication1.java:59)
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: https://api.rentrak.com/tv/v3/national_airing_views
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1876)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:338)
at javaapplication1.JavaApplication1.main(JavaApplication1.java:56)
这是我使用来构建响应代码
StringBuilder response;
try (BufferedReader in = new BufferedReader(
new InputStreamReader(connection.getInputStream()))) {
String inputLine;
response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
}
如果我理解你很希望得到一个HTTP响应的响应代码?赖特? – thepaulo
我想获取存储在API上的响应消息 – MosaicOrange
如果调用的WS是一个SOAP对象,那么您将为未建模的故障和普通的异常子类获得一个“SOAPFaultException”。请参阅[this](https://docs.oracle.com/cd/E24329_01/web.1211/e24965/faults.htm#WSADV623) –