Spring Rest 模板 - Post 向 azure 请求字符串正文给出 500 错误
Spring Rest Template - Post Request String Body to azure gives 500 error
在进入此代码块之前,我可以调用 4-5 个 rest api。但是我无法执行这段代码。
我正在使用 spring 4.0.4 内核,mvc jars。
我正在尝试使用 rest 模板调用 azure ucwa web 服务,它是一个 post 方法,以字符串作为正文。我收到 500 内部错误。我在网上搜索过,但没有找到解决方案,请指导我。谢谢。
link : https://docs.microsoft.com/en-us/skype-sdk/ucwa/sendanim
第 9 步
RestTemplate restTemplate = new RestTemplate();
System.out.println(" jsonLinksObj : 4a "+jsonLinksObj);
org.json.JSONObject jsonSendMessageObj = jsonLinksObj.getJSONObject("sendMessage");
String sendMsgFullUrl = poolUrl.concat(jsonSendMessageObj.getString("href")).concat("?OperationContext=4322131");
headers.clear();
headers.setContentType(MediaType.TEXT_PLAIN);
headers.set("Authorization", "Bearer " + jwtToken);
String body = "My Send Message Here";
HttpEntity<Object> entityJsonSendMsg4 = new HttpEntity<Object>(body, headers);
ResponseEntity<Object> sbSendMsgObj = null;
try{
sbSendMsgObj = restTemplate.exchange(
new URI(sendMsgFullUrl),
HttpMethod.POST,
entityJsonSendMsg4,
Object.class);
} catch(Exception e){
e.printStackTrace();
}
WARN : org.springframework.web.client.RestTemplate - POST request for "https://webpoolpnqin102.infra.lync.com/ucwa/oauth/v1/applications/102086376449/communication/conversations/46db8085-8ad0-4186-a4f0-9a521b256b9b/messaging/messages?OperationContext=4322131" resulted in 500 (Internal Server Error); invoking error handler
org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94)
at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:589)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:547)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:518)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:463)
at com.test.example.employee.test.EmployeeTest.sendMessage(EmployeeTest.java:266)
at com.test.example.employee.test.EmployeeTest.main(EmployeeTest.java:337)
Exception in thread "main" java.lang.NullPointerException
at com.test.example.employee.test.EmployeeTest.sendMessage(EmployeeTest.java:331)
at com.test.example.employee.test.EmployeeTest.main(EmployeeTest.java:337)
很难说您得到的 500 响应背后的原因是什么 - 您可能必须自己调试它,但应该不会很难。
自从您使用默认构造函数创建 RestTemplate
后,您就获得了默认错误处理。 运行 您的应用程序处于调试模式并在 DefaultResponseErrorHandler::handleError
中放置一个断点。在那里,您可以访问由 ClientHttpResponse
class 表示的响应,并且可以实际查看您返回的正文。
当您知道错误背后的原因时,您可以相应地更正请求。
我已经清理并构建了项目。并再次 运行 代码。它工作正常,任何人都想在正文中发送字符串,可以使用上面的 rest 模板代码。谢谢。
在进入此代码块之前,我可以调用 4-5 个 rest api。但是我无法执行这段代码。
我正在使用 spring 4.0.4 内核,mvc jars。
我正在尝试使用 rest 模板调用 azure ucwa web 服务,它是一个 post 方法,以字符串作为正文。我收到 500 内部错误。我在网上搜索过,但没有找到解决方案,请指导我。谢谢。
link : https://docs.microsoft.com/en-us/skype-sdk/ucwa/sendanim 第 9 步
RestTemplate restTemplate = new RestTemplate();
System.out.println(" jsonLinksObj : 4a "+jsonLinksObj);
org.json.JSONObject jsonSendMessageObj = jsonLinksObj.getJSONObject("sendMessage");
String sendMsgFullUrl = poolUrl.concat(jsonSendMessageObj.getString("href")).concat("?OperationContext=4322131");
headers.clear();
headers.setContentType(MediaType.TEXT_PLAIN);
headers.set("Authorization", "Bearer " + jwtToken);
String body = "My Send Message Here";
HttpEntity<Object> entityJsonSendMsg4 = new HttpEntity<Object>(body, headers);
ResponseEntity<Object> sbSendMsgObj = null;
try{
sbSendMsgObj = restTemplate.exchange(
new URI(sendMsgFullUrl),
HttpMethod.POST,
entityJsonSendMsg4,
Object.class);
} catch(Exception e){
e.printStackTrace();
}
WARN : org.springframework.web.client.RestTemplate - POST request for "https://webpoolpnqin102.infra.lync.com/ucwa/oauth/v1/applications/102086376449/communication/conversations/46db8085-8ad0-4186-a4f0-9a521b256b9b/messaging/messages?OperationContext=4322131" resulted in 500 (Internal Server Error); invoking error handler
org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94)
at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:589)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:547)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:518)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:463)
at com.test.example.employee.test.EmployeeTest.sendMessage(EmployeeTest.java:266)
at com.test.example.employee.test.EmployeeTest.main(EmployeeTest.java:337)
Exception in thread "main" java.lang.NullPointerException
at com.test.example.employee.test.EmployeeTest.sendMessage(EmployeeTest.java:331)
at com.test.example.employee.test.EmployeeTest.main(EmployeeTest.java:337)
很难说您得到的 500 响应背后的原因是什么 - 您可能必须自己调试它,但应该不会很难。
自从您使用默认构造函数创建 RestTemplate
后,您就获得了默认错误处理。 运行 您的应用程序处于调试模式并在 DefaultResponseErrorHandler::handleError
中放置一个断点。在那里,您可以访问由 ClientHttpResponse
class 表示的响应,并且可以实际查看您返回的正文。
当您知道错误背后的原因时,您可以相应地更正请求。
我已经清理并构建了项目。并再次 运行 代码。它工作正常,任何人都想在正文中发送字符串,可以使用上面的 rest 模板代码。谢谢。