我正试图在JAVA中发送POST请求到我本地运行的服务。当我在POSTMAN上发出请求时,如下所示,我得到了200响应以及我正在寻找的JSON数据响应
邮差回复!
[
{
"id": "Period10",
"text": "In 10 years",
"uniqueId": "946bf224-9031-402e-9753-b665be491acd",
"extendedResults": {
"/InsuredAgeMin$value": 0,
"_order": 0,
"/InsuredAgeMin/InsuredAgeMax$value": 45,
"/InsuredAgeMin$id": 0,
"/InsuredAgeMin/InsuredAgeMax/Term$id": "Period10",
"name": "/InsuredAgeMin/InsuredAgeMax/Term",
"/InsuredAgeMin/InsuredAgeMax$id": 45,
"ref-data-id": "M_282_LSWL.Config.PaymentTerm.2",
"locale": "en-jp",
"/InsuredAgeMin/InsuredAgeMax/Term$value": "In 10 years"
}
},
{
"id": "Period11",
"text": "In 11 years",
"uniqueId": "73608932-03b9-4cb6-8cb4-84e01bccb44c",
"extendedResults": {
"/InsuredAgeMin$value": 0,
"_order": 1,
"/InsuredAgeMin/InsuredAgeMax$value": 45,
"/InsuredAgeMin$id": 0,
"/InsuredAgeMin/InsuredAgeMax/Term$id": "Period11",
"name": "/InsuredAgeMin/InsuredAgeMax/Term",
"/InsuredAgeMin/InsuredAgeMax$id": 45,
"ref-data-id": "M_282_LSWL.Config.PaymentTerm.2",
"locale": "en-jp",
"/InsuredAgeMin/InsuredAgeMax/Term$value": "In 11 years"
}
},
但是当我尝试使用JAVA做同样的事情时,我没有成功。这是我一直在使用的代码。
Java代码
private static JSONObject JSONPostResponse() throws IOException, JSONException {
String query = "http://localhost:8081/harmony/api/service/referenceData/M_282_LSWL.Config.PaymentTerm.2";
String json = "{\"ref-data-id\":\"M_282_LSWL.Config.PaymentTerm.2\",\"filter./InsuredAgeMin$id\":{\"value\":30,\"operator\":\"lte\"},\"filter./InsuredAgeMin/InsuredAgeMax$id\":{\"value\":30,\"operator\":\"gte\"},\"name\":{\"value\":\"/InsuredAgeMin/InsuredAgeMax/Term\",\"operator\":\"equal\"},\"locale\":\"en-jp\",\"_sort\":{\"_order\":\"asc\"}}";
CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL));
URL url = new URL(query);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("cache-control", "no-cache");
conn.setRequestProperty("postman-token", "5b70f93d-7358-eeb3-0581-9ec8f46d7b0e");
conn.setDoOutput(true);
conn.setDoInput(true);
OutputStream os = conn.getOutputStream();
os.write(json.getBytes("UTF-8"));
os.close();
// read the response
InputStream in = new BufferedInputStream(conn.getInputStream());
String result = org.apache.commons.io.IOUtils.toString(in, "UTF-8");
JSONObject jsonObject = new JSONObject(result);
in.close();
conn.disconnect();
return jsonObject;
}
上面的代码给出了以下错误。
Exception in thread "main" java.io.IOException: Server returned HTTP response code: 500 for URL: http://methmy-qa2-r2.northeurope.cloudapp.azure.com/harmony/api/service/referenceData/LSWL.MainCoverage.PaymentTerm
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1676)
at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1674)
at java.security.AccessController.doPrivileged(Native Method)
at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1672)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1245)
at com.metlife.harmony.selenium.utils.JSONObjectReader.sendPost(JSONObjectReader.java:158)
at com.metlife.harmony.selenium.utils.JSONObjectReader.main(JSONObjectReader.java:181)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Caused by: java.io.IOException: Server returned HTTP response code: 500 for URL: http://methmy-qa2-r2.northeurope.cloudapp.azure.com/harmony/api/service/referenceData/LSWL.MainCoverage.PaymentTerm
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1627)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
at com.metlife.harmony.selenium.utils.JSONObjectReader.sendPost(JSONObjectReader.java:153)
我实际上不太清楚我在这里要做什么,我是否认为身体请求错了,我应该创建java pojos吗?
我是否错过了对本地主机的请求?这对于要求发生至关重要吗?
我不太确定,我们将非常感谢任何帮助。
提前谢谢。
亲切的问候,尼科斯。