通过GET方法返回定义的任意对象

package util;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.Duration;
import java.time.Instant;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;

public class HttpClientUtil {

	public static <T> T getByUrl(String requestUrl, Class<T> classOfT) {
		CloseableHttpClient httpClient = HttpClients.createDefault();
		ObjectMapper objectMapper = new ObjectMapper();
		objectMapper.configure(MapperFeature.AUTO_DETECT_CREATORS, true);
		objectMapper.configure(
				DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
		objectMapper.registerModule(new JavaTimeModule());
		objectMapper
				.configure(
						com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,
						false);

		T r = null;
		try {
			HttpGet getRequest = new HttpGet(requestUrl);
			HttpResponse response = httpClient.execute(getRequest);
			HttpEntity entity = response.getEntity();
			String entityStr = EntityUtils.toString(entity, "UTF-8");
			// System.out.println(entityStr);
			r = objectMapper.readValue(entityStr, classOfT);
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return r;
	}

}

  

时间: 2024-10-10 20:05:25

通过GET方法返回定义的任意对象的相关文章

js通过方法返回对象的注意点

问题:js通过方法返回一个字面量对象和返回一个提前已经定义好的字面量对象有区别吗? 答案:有 我们先来看看第一种情况,fun1方法返回一个提前没定义的字面量对象,然后通过调用方法返回三个对象,分别是obj1, obj2, obj3,然后我修改obj2对象的age方法,打印obj1, obj2, obj3,的age属性分别是什么? 1 //第一种情况: 2 function fun1() { 3 4 return { 5 uname: `ash`, 6 age: 18 7 } 8 //这里返回一个

Object.toString()方法返回16进制地址

首先Object源码 public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } 问题:为什么要将hashCode()转换为16进制.答:hashCode()方法返回的是此对象在内存中的地址,是用×××表示的.1.内存的地址在计算机行业通常是由16进制进行表示,有的人可能会问,转换的过程会不会造成性能的损失.通过toHexString()源码来看,所有

JavaScript定义类与对象的一些方法

最近偶然碰到有朋友问我"hoisting"的问题.即在js里所有变量的声明都是置顶的,而赋值则是在之后发生的.可以看看这个例子: 1 var a = 'global'; 2 (function () { 3     alert(a); 4     var a = 'local'; 5 })(); 大家第一眼看到这个例子觉得输出结果是什么?'global'?还是'local'?其实都不是,输出的是undefined,不用迷惑,我的题外话就是为了讲这个东西的. 其实很简单,看一看JavaS

override(重写,覆盖) 1、方法名、参数、返回值相同。 2、子类方法不能缩小父类方法的访问权限。 3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。 4、存在于父类和子类之间。 5、方法被定义为final不能被重写。 overload(重载,过载) 1、参数类型、个数、顺序至少有一个不相同。 2、不能重载只有返回值不同的方法名。 3、存在于父类和子

override(重写,覆盖) 1.方法名.参数.返回值相同. 2.子类方法不能缩小父类方法的访问权限. 3.子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常). 4.存在于父类和子类之间. 5.方法被定义为final不能被重写. overload(重载,过载) 1.参数类型.个数.顺序至少有一个不相同.   2.不能重载只有返回值不同的方法名. 3.存在于父类和子类.同类中. 方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现. 重写(O

java定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积

需求如下:(1)定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积. (2)定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义如下: public void printAreas(Cirlce c, int times) 在printAreas方法中打印输出1到time之间的每个整数半径值,以及对应的面积.例如,times为5,则输出半径1,2,3,4,5,以及对应的圆面积. 在main方法

Js中找任意对象的原型方法及改造原型

Java中有运行时类型识别,js可以很方便的模仿这个特性,因为所有js对象都有一个属性constructor(构造器),表示这个对象的构造方法,原型与构造方法同名,所以可以通过这儿知道任意对象的原型名称.具体可以看代码(这里简单的封装了): function runToChain(obj){ var chainName=obj.constructor.name; return chainName; } 知道对象原型后,可以通过原型的prototype属性为原型添加可改造属性和方法,改造原型.

dwr处理参数或返回值为pojo对象的JavaBean方法

在使用dwr避免不了碰到javabean中有对象作为参数的,那么这样的方法怎么在js中调用呢? 就这个问题,做了一个小例子,与大家分享一下: package com.tgb.dwr; /** * dwr使用测试 * @author Admin * */ public class DwrTest { public String hellobody(User user){ return "Hello,"+user.getName()+",恭喜你今年"+user.getA

JavaSE8基础 链式编程 调用方法返回对象再调方法 简单示例

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: class Person { public void sayHello() { System.out.println("hello world"); } } class Tools { public static Person getPersonObj() { return new Person()

String中各方法多数情况下返回新的String对象

(1)subString是否始终返回一个新串? 事实并非如此,subString只有在截取的子串是真子串(真子串指子串与原串不相同)时才会返回一个新声明的子串.当截取的是整个字符串时,则返回自身,具体可参考源码: subString方法用来截取子串,方法的使用有两种形式String subString(int begin)和String subString(int begin, int end).具体可参考JDK文档. public String substring(int beginIndex