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

作为java对象获取HTTP响应

施洛城
2023-03-14

我正在使用Spring Web创建一个rest资源。我用Java创建了类似于Json响应的文档对象。当我使用String.class作为响应类型时,我从请求中获取响应。当我更改对我创建的类的响应时,boy是null。

这是我的httpgetter

   private <T> T perform(String token, String resourcePath, Class<T> responseType, HttpMethod method, MultiValueMap<String, String> queryParams) {
     UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.newInstance()
          .scheme(protocol)
          .host(host);

    UriComponents uriComponents = uriComponentsBuilder.build();
    String url = uriComponents.toString();

    HttpHeaders headers = new HttpHeaders();
    headers.add("contentType","application/json");

    HttpEntity<String> requestEntity = new HttpEntity<>(headers);
    ResponseEntity<T> responseEntity = restTemplate.exchange(url, method, requestEntity, responseType);
    return responseEntity.getBody();
   }
     return null;
 }

Json文档

@JsonIgnoreProperties(ignoreUnknown = false)
public class SiteDocument {

  @JsonProperty("id")
  private int siteID;
  @JsonProperty("site_name")
  private String siteName;
  @JsonProperty("url")
  private String url;
}

函数调用

 perform(null, "/sites", SiteDocument[].class, HTTP.get,null)

JSON响应

{  
 "items":[  
  {  
     "id":5841970702,
     "site_name":"test",
     "url":"http://sample/again/",
     "pages":2,
     "policies":0,
     "product":[  
        "quality_assurance",
        "accessibility",
        "seo",
        "policy"
     ],
     "_links":{  
        "site":{  
           "href":"https://api.siteimprove.com/v2/sites/5841970702"
        }
     }
  },

  {  
     "id":5881398958,
     "site_name":"preview.site",
     "url":"http://sample.site",
     "pages":0,
     "policies":0,
     "product":[  
        "quality_assurance",
        "policy"
     ],
     "_links":{  
        "site":{  
           "href":"https://api.siteimprove.com/v2/sites/5881398958"
        }
     }
  }
 ],
 "total_items":5,
 "total_pages":1,
  "links":{  
  "self":{  
     "href":"https://api.siteimprove.com/v2/sites"
  }
  }
  }
  headers.add("Accept","application/json");
  headers.add("Content-Type","application/json");

共有1个答案

鲁博瀚
2023-03-14

问题在POM文件中。POM文件中未添加运行时依赖项。将在POM文件中添加以下依赖项。

  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
  </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <scope>runtime</scope>
    </dependency>
 类似资料:
  • 问题内容: 我想从Http get响应中获取一个对象: 这是我当前对Http get的代码: 这是convertSteamToString函数: 现在,我只是得到一个字符串对象。我如何找回JSON对象。 问题答案: 您获得的字符串只是JSON Object.toString()。这意味着您将获取JSON对象,但使用String格式。 如果应该获取JSON对象,则可以输入:

  • 我想从Http get响应中获取一个对象: 这是我当前的Http get代码: 这是转换的SteamToString函数: 现在我只是得到一个字符串对象。如何取回JSON对象。

  • 问题内容: 我在服务器上运行了一个Web服务,该服务以XML格式或JSON格式返回数据。我想请求JSON格式,但使用HTTP Post方法。 任何帮助,不胜感激。 提前致谢。 问题答案: 这是适用于JSON发布请求的代码,TouchJSON Framework用于解析JSON,谢谢“ schwa”。

  • 问题内容: 我知道曾经有一种使用apache commons来获取它的方法,如此处记录的:http : //hc.apache.org/httpclient-legacy/apidocs/org/apache/commons/httpclient/HttpMethod.html 和此处的示例: http://www.kodejava.org/examples/416.html 但我认为这已被弃用。

  • 我试图弄清楚是否有可能返回某种流(可能是内存流?)我从我的桶里得到的东西。 S3 bucket包含很多不同类型的图像、文档等。所有这些都应该在我的网站上使用。但是,我不想显示AWS S3存储桶的路径 这就是为什么我试图创建一个流,并动态显示图像和可下载文档,而不是使用完整路径。这有意义吗?:-) 我用的是C#/。NET AWS SDK。 期待听到任何想法和方向指向!

  • 我有一个asp。net应用程序,带有前端和web api部分。我希望移动应用程序能够使用受保护的web apiendpoint。这意味着我需要登录并在本机移动应用程序中处理身份验证令牌。 现在,登录到asp.net应用程序的唯一方法是通过默认asp.net /Account/Login页面。当我发布到登录终结点时,返回的正文只包含我的应用程序的html。令牌然后由asp.net.存储在cookie