2

我正在尝试访问可以使用 curl 进行测试的 Rest 资源,如果 id 的长度小于 11,例如 '12345' https://somesite.com:7677/something/id/ { id} iam 从我的 java 代码和 curl 中得到 404 HTTP 错误,这是预期的

如果 id 的长度等于 11 并且它是无效的 id 则 iam 从 curl 和 java 获得相同的响应

但是,如果我给出 curl 已经存在的有效 id,我会得到正确的 json 响应,但是当我试图从 restTemplate 访问 Rest 资源时,它会显示如下所示的错误

客户端发送的请求在语法上是错误的 ()。并且此请求没有错误日志

从过去 2 天开始,我无法弄清楚,请提供您对此的想法,以便它对我真正有帮助 我的休息模板配置:

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
        <property name="messageConverters">
            <list>
                <ref bean="jsonHttpMessageConverter" />
            </list>
        </property>
    </bean>

我试图访问的代码是

public List<Account> getAccounts(PersonNumber personNumber) {
        logger.warn("Inside getAccounts of TransferAgreement client");

        String url = "https://somesite.com:7677/something/id/12345";
        logger.warn("URL acessing "+personNumber.toString()+"  URL  "+ url);
       String a = restTemplate.getForObject(url, String.class);
       System.out.println(a);
        return null;
    }
4

2 回答 2

4

假设您正在使用 Eclipse。

为 Spring 启用日志记录

  • 将日志记录级别设置为 Spring 的调试或跟踪,请参阅日志记录
  • 运行你的 java 例子
  • 将日志记录输出添加到您的帖子中

我认为启用日志记录就足够了,我希望在 Spring 中出现异常。但另外,测试是否执行了请求:

  • 设置代理,请参阅how-to-trace-soap-message-in-eclipse-ide - 不管它是 REST 还是 SOAP,它是一个 TCP/IP 监视器
  • 运行你的 curl 示例
  • 运行你的 java 例子
  • 将这两个请求添加到您的帖子中
于 2012-04-25T13:04:32.200 回答
0

你能设置你的开发环境,以便在 Spring 代码中设置调试断点吗?如果是这样,您可以在 AbstractHttpMessageConverter.write() 的最后一行设置断点。假设您可以在调试器在断点处暂停您的应用程序时评估 Java 表达式,您应该尝试获取 outputMessage.toString() 的结果,将其复制出 IDE,然后将其粘贴到文本编辑器中。这将向您显示 RestTemplate 正在发送的 JSON,因此您可以验证它是否与您通过 curl 发送的内容完全相同。

于 2012-04-25T21:46:15.977 回答