【问题标题】:Debug RestTemplate Post request调试 RestTemplate Post 请求
【发布时间】:2014-02-19 14:17:33
【问题描述】:

我正在尝试在Spring 中使用RestTemplatePOST 转换为REST-API。 这是我正在使用的代码:

//Code to Post data using Rest Template
List<UserVO> userList = getUsers();
RestRequestVO submitRequestData = new RestRequestVO();
submitRequestData.setAction("update");
submitRequestData.setType("user");
submitRequestData.setItems(items);
ResponseEntity<String> resposne = restTemplate.postForEntity(putUserUrl, submitRequestData, String.class);
String message = resposne.getBody();

//The structure of class
public class RestRequestVO {
private String action;
private String type;
private List<UserVO> items;

//Setters and Getters
}

//Expected JSON
{
"action"="update",
"type"="user",
"items"=[
    { //user1 }, {//user2} ....
]
}

我需要正确调试它,看看restTemplate.postForEntity(putUserUrl, submitRequestData, String.class); 行发送到 REST 服务器的确切 JSON 是什么。

我正在使用Eclipse。我试过逐行调试代码。 我也尝试将日志级别设置为Debug

按照 cmets 中给出的步骤进行更新

下面是我的log4j.xml,我看不到任何与 REST 模板相关的 http 日志。如果我做错了什么,请告诉我。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>

    <appender name="CA" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss,SSS} - %5t - %5p - %l  - %m%n" />
        </layout>
    </appender>

    <appender name="FA" class="org.apache.log4j.FileAppender">
        <param name="File" value="cw.log"/>
        <param name="Threshold" value="DEBUG"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss,SSS} - %5t - %5p - %l  - %m%n" />
        </layout>
    </appender>

    <logger name="log4j.logger.httpclient.wire" additivity="false" > 
    <level value="DEBUG" /> 
    <appender-ref ref="CA"/> 
    </logger>

    <root>
        <level value="Debug" />
        <appender-ref ref="CA" />
    </root>

</log4j:configuration>

我打算在将 POJO 创建的 JSON 发送到 REST POST URL 之前打印它。

【问题讨论】:

  • stackoverflow.com/questions/7952154/…。注意log4j.logger.httpclient.wire=DEBUG
  • 我使用的是xml格式(log4j.xml),请问如何在xml文件中添加以上内容??
  • &lt;logger name="log4j.logger.httpclient.wire" additivity="false" &gt; &lt;level value="DEBUG" /&gt; &lt;appender-ref ref="your_appender_goes_here"/&gt; &lt;/logger&gt;
  • 根据 cmets 添加,仍然无法查看线路日志..

标签: java json spring rest resttemplate


【解决方案1】:

AFAIK,通常设置日志级别会有所帮助,但您可能遇到here(请参阅未接受的答案)或here 描述的类似情况。

【讨论】:

  • 最终,我希望日志记录解决方案能够正常工作,因为这将帮助我分析在服务器上运行的进程。接受的答案仅在调试过程中帮助我。
【解决方案2】:

你可以在public final void write(final T t, MediaType contentType, HttpOutputMessage outputMessage)方法结束时在AbstractHttpMessageConverter中设置断点,并对outputMessage.getBody()求值

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 2011-05-03
    • 2019-08-24
    • 1970-01-01
    相关资源
    最近更新 更多