package com.xxx.xxx.common;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.List;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xxx.xxx.visa.dto.plancode.MainProduct;
import com.xxx.xxx.visa.dto.plancode.VsPlanCodeDataResult;
import com.xxx.xxx.visa.dto.plancode.VsPlanCodeRequestDto;
public class AppUrlDemo {
public static void main(String[] args) throws Exception {
String url = "http://accept-policy-front.sit.yjx.tpi.cntaiping.com/api/v1/integration/product/query/detail";// 第六套联调
// String path = System.getProperty("user.dir");//user.dir指定了当前的路径
// String requestXml = readXML(path +
// "/src/com/thirdPlat/szddc/test/001claim.json");
VsPlanCodeRequestDto vsPlanCodeRequestDto = new VsPlanCodeRequestDto();
vsPlanCodeRequestDto.setProductId("3002262");
String requestXml = JSON.toJSONString(vsPlanCodeRequestDto);
System.out.println("请求参数:");
System.out.println(requestXml);
String responseXml = getResponseXml(requestXml, url);
System.out.println("\n返回参数:");
System.out.println(responseXml);
JSONObject jsonObject = JSONObject.parseObject(responseXml);
JSONObject jd = JSONObject.parseObject(jsonObject.get("data").toString());
System.out.println("DATA:" + jd);
JSONArray jArr = jd.getJSONArray("mainProducts");
List<MainProduct> mainProductDtoList = JSONObject.parseArray(jArr.toString(), MainProduct.class);
System.out.println("mainProductDtoList:" + mainProductDtoList);
}
/**
* 获取响应报文
*
* @param request
* @param url
* @return
* @throws Exception
*/
public static String getResponseXml(String requestXml, String url) throws Exception {
StringBuilder buffer = new StringBuilder();
InputStream inputStream = null;
BufferedReader reader = null;
String strMessage = "";
HttpClient httpClient = new HttpClient();
HttpConnectionManagerParams managerParams = httpClient.getHttpConnectionManager().getParams();
// 设置连接超时时间(单位毫秒)
managerParams.setConnectionTimeout(10000 * 60);
// 设置读数据超时时间(单位毫秒)
managerParams.setSoTimeout(60000 * 60);
PostMethod postMethod = new PostMethod(url);
// 将请求参数XML的值放入postMethod中
try {
postMethod.addRequestHeader("content-type", "application/json; charset=utf-8");
postMethod.setRequestEntity(new StringRequestEntity(requestXml, "application/xml", "UTF-8"));
// 获取http状态返回代码 200-服务器成功返回网页
int statusCode = 0;
try {
statusCode = httpClient.executeMethod(postMethod);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (statusCode != 200) {
throw new IllegalStateException("Method failed: " + postMethod.getStatusLine());
}
inputStream = postMethod.getResponseBodyAsStream();
reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
while ((strMessage = reader.readLine()) != null) {
buffer.append(strMessage);
}
} catch (Exception ex) {
throw new IllegalStateException(ex.toString());
} finally {
// 释放连接
postMethod.releaseConnection();
}
return buffer.toString();
}
public static String readXML(String xmlpath) {
InputStream in = null;
Reader reader = null;
try {
int aa;
in = new FileInputStream(xmlpath);
reader = new InputStreamReader(in, "UTF-8");
StringBuffer sb = new StringBuffer("");
while ((aa = reader.read()) != -1) {
sb.append((char) aa);
}
return sb.toString();
} catch (Exception localException) {
}
return null;
}
}