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 模板代码。谢谢。