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

可以使用SpringRESTTemplate将原始JSON传递给RESTAPI吗?

许典
2023-03-14

是否可以使用SpringRESTTemplate将原始JSON传递给RESTAPI?

我正在尝试以下几点:

List<HttpMessageConverter<?>> httpMessageConverters = new ArrayList<HttpMessageConverter<?>>();
httpMessageConverters.add(new MappingJacksonHttpMessageConverter());
restTemplate.setMessageConverters(httpMessageConverters);
String jsonText = // raw JSON
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<?> entity = new HttpEntity<Object>(jsonText, httpHeaders);
restTemplate.exchange(url, HttpMethod.POST, entity, responseClass);

当我调用这个请求时,我得到一个HTTP 400错误响应,这意味着错误的请求。但是,所有标头和JSON正文都与使用我拥有的HTTP客户端提交的相同。

相比之下,当我创建MyRequest对象并在HttpEntity上设置它时,下面的工作原理很好:

List<HttpMessageConverter<?>> httpMessageConverters = new ArrayList<HttpMessageConverter<?>>();
    httpMessageConverters.add(new MappingJacksonHttpMessageConverter());
    restTemplate.setMessageConverters(httpMessageConverters);
    MyRequest myRequest = new MyRequest();
    httpHeaders.setContentType(MediaType.APPLICATION_JSON);
    HttpEntity<?> entity = new HttpEntity<Object>(myRequest, httpHeaders);
    restTemplate.exchange(url, HttpMethod.POST, entity, responseClass);

因此,我想知道如何使用字符串格式的原始JSON调用RESTAPI?

共有1个答案

公孙宏畅
2023-03-14

这就是方法

            String url = String.format("https://SITE");
            RestTemplate template = new RestTemplate();
            template.getMessageConverters().add(new StringHttpMessageConverter());

            String valor ="{\"cmd\":\"123\", \"includeImei\":\"true\"}";

            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_JSON);
            headers.set("Authenticate", "TOKEN");


            HttpEntity<String> entity = new HttpEntity<String>(valor, headers);
            URI valoresdevueltos = template.postForLocation(url, entity);
 类似资料:
  • 问题内容: 我正在尝试执行一个Web服务,该服务返回带有以下代码的DataTable: 如果Web服务返回一个类,则它将起作用,因此它与输入参数等无关。仅当Web方法返回一个数据表(该数据表仅包含2列和2行用于我正在执行的测试)时,它才会失败。 WebService类装饰有[ScriptService]属性,因此我认为ASP.NET将自动将返回值序列化为JSON。它似乎不适用于数据表。 我发现的唯

  • 我试图找出是否有可能传递一个JSON对象RestAPI,或传递多个参数到该API?如何在Spring中读取这些参数?让我们假设url看起来像下面的例子: 例1<代码>http://localhost:8080/api/v1/mno/objectKey?id=1 传递下面url中的JSON对象是否有效? 例2<代码>http://localhost:8080/api/v1/mno/objectKey

  • 问题内容: 如果我有 我如何在内部找出现在由表示的变量称为? 问题答案: 这是不可能的。即使是按引用传递也不会帮助您。您必须将名称作为第二个参数传递。 但是,您肯定要问的 不是 解决问题的好方法。

  • 问题内容: 我必须在6个以上的环境中运行相同的其余api脚本集。因此,我已将所有测试数据和端点/资源路径存储在json文件中。然后,我尝试将此json文件读入我的karate- config.js文件,这是因为我要获取与从命令行(karate.env)传递的环境相对应的数据,该环境正在读入我的空手道-config.js文件 以下是我的json文件示例 下面是我的karate-config.js文件

  • 我是全新的RestTemboard和基本上在REST API也。我想通过Jira REST API检索我的应用程序中的一些数据,但取回401未经授权。在jira rest api留档上找到并发表文章,但不知道如何将其重写为java,因为示例使用curl的命令行方式。我将感谢任何建议或建议如何重写: 进入java使用SpringRest模板。其中ZnJlZDpmcmVk是用户名:密码的Bas64编码

  • 下面您将找到应该调用的函数,而不是: 我可以为这些自定义类型创建工厂,并根据值生成类型,而不是传递给的类型,或者传递一个字符串化的对象(对象/数组、更多的对象/数组)。但我想知道(尤其是后者,它让我发冷)是否真的有必要。文档只提到这个函数,作为向区块链提交事务的一种方式。 我应该用我的工厂解决方案吗?是否有另一个函数,我可以使用它来提交使用类型的事务?或者这不是我应该构造我的链码的方式,我应该考虑