Http 를 통 해 원 격 데 이 터 를 Class 클래스 로 변환 하 는 일반적인 방법
가 져 온 JSon 데 이 터 를 class 의존 jackson 으로 변환 합 니 다.
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-databindartifactId>
dependency>
/**
* Created by weimiantong on 17/2/7.
*/
@Service
@Slf4j
public class GetRemoteDataRepository {
@Value("${service.shop.url}")
private String shopUrl;
@Value("${service.jqy.url}")
private String jqyUrl;
//
public T getRemoteData(String uri, Class clazz) {
T out;
String url = null;
if (uri.startsWith("ws/shopws")) {
url = shopUrl;
} else if (uri.startsWith("ws/jqyws") || uri.startsWith("jqyHome") || uri.startsWith("ws/jqynewgroupws")) {
url = jqyUrl;
}
if (url != null) {
url += uri;
try {
String data = HttpUtil.getHttpUrlContent(url.toString(), "GBK", false, StringUtils.EMPTY);
System.out.println(data);
ObjectMapper objectMapper = new ObjectMapper();
out = objectMapper.readValue(data, clazz);
return out;
} catch (Exception e) {
log.error("{}", e);
return null;
}
}
return null;
}
}
Http 는 다음 과 같은 도구 류 를 봉 인 했 습 니 다.
@Slf4j
public class HttpUtil {
private final static int CONNECT_TIME_OUT = 5000;
private final static int READ_TIME_OUT = 5000;
public static String getHttpUrlContent(String urlStr, String encoding, boolean isPost, String postBody) {
return getHttpUrlContent(urlStr, encoding, isPost, postBody, CONNECT_TIME_OUT, READ_TIME_OUT);
}
public static String getHttpUrlContent(String url){
return getHttpUrlContent(url,"UTF-8",false,null);
}
public static String getHttpUrlContent(String urlStr, String encoding, boolean isPost, String postBody, int connectTimeOut, int readTimeOut) {
URL url = null;
HttpURLConnection conn = null;
long startTime = System.currentTimeMillis();
try {
url = new URL(urlStr);
conn = (HttpURLConnection) url.openConnection();
// post
if (isPost) {
conn.setRequestMethod("POST");
conn.setDoOutput(true);
}
// ,
conn.setConnectTimeout(connectTimeOut);
conn.setReadTimeout(readTimeOut);
//
conn.connect();
if (isPost) {
OutputStream out = conn.getOutputStream();
out.write(postBody.getBytes(encoding));
out.flush();
}
InputStream is = null;
try {
is = conn.getInputStream();
} catch (IOException ex) {
log.error("conn getInputStream error : ",ex);
is = conn.getErrorStream();
}
BufferedReader breader = new BufferedReader(new InputStreamReader(is, encoding));
char[] c_buf = new char[8192];
StringBuffer buf = new StringBuffer("");
int len = breader.read(c_buf, 0, 8192);
while (len > 0) {
buf.append(c_buf, 0, len);
c_buf = new char[8192];
len = breader.read(c_buf, 0, 8192);
}
breader.close();
return buf.toString();
} catch (Exception e) {
log.error("error in getHttpUrlContent " + urlStr, e);
} finally {
url = null;
if (conn != null) {
conn.disconnect();
}
long t = System.currentTimeMillis() - startTime;
if (t > 300)
log.warn(urlStr + " cost " + t);
}
return "";
}
public static String getHttpUrlContent(String urlStr, String encoding, boolean isPost, String postBody, Map headers, int connectTimeOut, int readTimeOut) {
URL url = null;
HttpURLConnection conn = null;
long startTime = System.currentTimeMillis();
try {
url = new URL(urlStr);
conn = (HttpURLConnection) url.openConnection();
Iterator iterator = headers.keySet().iterator();
while (iterator.hasNext()) {
String key = (String)iterator.next();
conn.setRequestProperty(key, headers.get(key));
}
// post
if (isPost) {
conn.setRequestMethod("POST");
conn.setDoOutput(true);
}
// ,
conn.setConnectTimeout(connectTimeOut);
conn.setReadTimeout(readTimeOut);
//
conn.connect();
if (isPost) {
OutputStream out = conn.getOutputStream();
out.write(postBody.getBytes(encoding));
out.flush();
}
InputStream is = null;
try {
is = conn.getInputStream();
} catch (IOException ex) {
log.error("conn getInputStream error : ",ex);
is = conn.getErrorStream();
}
BufferedReader breader = new BufferedReader(new InputStreamReader(is, encoding));
char[] c_buf = new char[8192];
StringBuffer buf = new StringBuffer("");
int len = breader.read(c_buf, 0, 8192);
while (len > 0) {
buf.append(c_buf, 0, len);
c_buf = new char[8192];
len = breader.read(c_buf, 0, 8192);
}
breader.close();
return buf.toString();
} catch (Exception e) {
log.error("error in getHttpUrlContent " + urlStr, e);
} finally {
url = null;
if (conn != null) {
conn.disconnect();
}
long t = System.currentTimeMillis() - startTime;
if (t > 300)
log.warn(urlStr + " cost " + t);
}
return "";
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.