当前位置: 首页 > 知识库问答 >
问题:

给出http 400错误请求的UniRest和Spring RestTemplate之间有什么区别?

严元白
2023-03-14

UniRest和Spring RestTemboard有什么区别,它们会返回一个400错误请求,发送的标头和正文显然相同?

我试图访问HubSpot API来创建博客帖子,但使用RestTemplate时出现了400个错误请求错误,而使用UniRest可以正常工作(返回OK响应)。然而,我不想仅仅为了一个REST调用就包含一个库:我宁愿坚持使用RestTemplate。

  • HttpMethod:POST
  • 网址:https://api.hubapi.com/content/api/v2/blog-posts?hapikey= *****************
  • 标题:Content-Type:应用程序/json
  • body:(由类实例表示为blogpostSendPost进一步向下)
{
  "name": "My first API blog post!",
  "content_group_id": 351076997
}

设置请求:

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<BlogpostSendPost> request = new HttpEntity<>(blogpostSendPost, headers);
log(request.toString()); 
//LOG PRINT: <BlogpostSendPost(name=My first API blog post!, content_group_id=351076997),[Content-Type:"application/json"]>

或在JSON中

这个json()方法将我的对象转换为json格式,就像您在日志中看到的那样

HttpEntity<String> request = new HttpEntity<>(blogpostSendPost.toJson(), headers);
log(request.toString()); 
//LOG PRINT: <{"name":"My first API blog post!","content_group_id":"351076997"},[Content-Type:"application/json"]>

使用<代码>。postForObject():400错误请求

BlogpostResponsePost answer = restTemplate.postForObject(
                                 "https://api.hubapi.com/content/api/v2/blog-posts?hapikey=***********",
                                  request, 
                                  BlogpostResponsePost.class);

使用<代码>。exchange():400错误请求

BlogpostResponsePost answer = restTemplate.exchange(
                                  "https://api.hubapi.com/content/api/v2/blog-posts?hapikey=**********",
                                   HttpMethod.POST,
                                   request,
                                   BlogpostResponsePost.class);
HttpResponse<JsonNode> resp = Unirest
        .post("https://api.hubapi.com/content/api/v2/blog-posts?hapikey=**********")
        .header("Content-Type", "application/json")
        .body(blogpostSendPost)
        .asJson();

我使用PostMan调用我的REST-SpringBoot应用程序,该应用程序使用这些服务:当我直接从PostMan调用HubSpot API时,它工作正常,就像使用UniRest库一样。

谢谢你们的帮助!!

共有1个答案

沈思博
2023-03-14

请参考https://community.hubspot.com/t5/APIs-Integrations/Getting-400-Bad-Request-when-trying-to-add-a-Blog-Post/td-p/306532

直接传递请求对象,而不是将请求对象转换为json。这对我很有效。

//尝试1:联系人-RestTemplate-OK-已创建联系人(API V1)

HttpEntity request1=新HttpEntity

 类似资料:
  • 问题内容: 如何区分Java中的错误和异常? 问题答案: 错误“表示合理的应用程序不应尝试捕获的严重问题”。 而 异常“指示合理的应用程序可能想要捕获的条件”。 错误及其子类都是例外。所有其他异常类都是异常。 检查 异常通常是程序可以从中恢复的异常,最好以编程方式从此类异常中恢复。示例包括,等。希望程序员使用try- catch块检查这些异常,或者将其扔回调用方。 另一方面,我们有 未经检查的 异

  • 问题内容: 我在大型代码库上运行JUnit测试,并且我意识到有时我会收到“错误”,而有时我会收到“失败”。有什么不同? 问题答案: 好的,我刚刚注意到一个模式,认为我已经弄清楚了(如果我错了,请纠正我)。在我看来,失败是指您的测试用例失败时,即您的断言不正确。错误是尝试实际运行测试时发生的意外错误- 异常等。

  • 问题内容: 在Python,有什么之间的差异模块?为什么有三个?他们似乎在做同样的事情… 问题答案: 我知道已经有人说过了,但我强烈建议你使用软件包。 如果你使用的是除python之外的语言,则可能是在考虑并且易于使用,代码不多且功能强大,这就是我以前的想法。但是该程序包是如此有用且太短,以至于每个人都应该使用它。 首先,它支持完全宁静的API,并且非常简单: 无论是GET / POST,你都无需

  • 问题内容: 在此示例中: 无法编译为: 而被编译器接受。 这个答案说明唯一的区别是,与不同,它允许您稍后引用类型,似乎并非如此。 是什么区别,并在这种情况下,为什么不第一编译? 问题答案: 通过使用以下签名定义方法: 并像这样调用它: 在jls§8.1.2中,我们发现(有趣的部分被我加粗了): 通用类声明定义了一组参数化类型(第4.5节), 每种可能通过类型arguments调用类型参数节的类型

  • 问题内容: 当我发送AJAX Post请求并在send()方法的queryString中发送参数时, Chrome DeveloperTool的XHR捕获工具显示请求有效负载下的参数。当我使用jquery的post函数时,该工具会在“表单数据”部分下显示参数。 有什么区别 ? 问题答案: 您尚未提供有关如何使用send函数的足够信息,但我假设您未设置mime类型来指定您要发送表单数据 在这种情况下