package com.jkcredit.invoice.util;

import net.sf.json.JSONObject;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Iterator;

/**
 * Created by zhangqingxin Date : 16/11/6 Time : 10:41
 * <p/>
 * 参考一(HttpClient)：http://mvnrepository.com/artifact/commons-httpclient/commons-
 * httpclient/3.1
 * 参考一(json-lib)：http://mvnrepository.com/artifact/net.sf.json-lib/json-lib/2.4
 */
public class QueryDemo_Test {

	/**
	 * 	测试地址
	 */
	//	private static final String URL = "http://110.88.150.74:80/credit?api=credit.sec.data";
	  	//private static final String URL = "http://110.88.150.74/credit?api=credit.sec.data";
	//	private static final String URL = "http://123.57.186.204/gateway?api=credit.sec.data";
		//private static final String URL = "http://123.57.186.204/gateway?api=credit.sec.data";
	//private static final String URL = "http://192.168.50.4:18080/gateway?api=credit.sec.data";//北京节点
	//	private static final String URL = "http://jk.h11.site/gateway?api=credit.sec.data";
		private static final String URL = "http://127.0.0.1:18080/gateway?api=credit.sec.data";
	//			private static final String URL = "http://110.88.150.68:8000/gateway?api=credit.sec.data_test";
			//	private static final String URL = "http://110.88.150.72:8000/gateway?api=credit.sec.data_test";
	//	private static final String URL = "http://60.205.114.163:8000/gateway?api=credit.sec.data";
		//private static final String URL = " http://45.126.120.88/gateway?api=credit.sec.data_test"; 
		//		private static final String URL = " http://45.126.120.88/gateway?api=credit.sec.data"; 
	//	private static final String URL = " http://119.18.195.163/gateway?api=credit.sec.data"; 

	/**
	 *	 分配的appKey
	 */
							  private static final String appKey = "jkxy";
							  // 	 private static final String appKey = "junxin_test";

		 	  	//			  	 private static final String appKey = "DATA_TEST";
	 	//private static final String appKey = "JIAO_KE";
		//private static final String appKey = "HANGZHOU_JUNXIN_72";

	/**290dec3f6a243889e5ed3210cf1ad499
	 * 	方法入口
	 *
	 * @param args
	 */
	public static void main(String args[]) throws Exception {

		for (int i = 0;i<=1000000;i++){
			QueryDemo_Test demo = new QueryDemo_Test();
			demo.runMainService(i);
		}

	}

	/**
	 * 	调用主接口
	 */
	public void runMainService(int i) {
		try {
			/**
			 *	 实名demo
			 */
			JSONObject paramJsonObj = initParamJsonObj_Realname(i);
			String ret = postClient(URL, paramJsonObj);
			System.out.println(ret);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 	整合参数(实名认证)
	 *
	 * @return
	 */
	public JSONObject initParamJsonObj_Realname(int i) {
		/**
		 *	 基本参数
		 */
		JSONObject paramJsonObj = new JSONObject();
		paramJsonObj.put("api", "COMPANY_QUERY_V1");//CMCC_3RD_DETAIL_V15C//CMCC_3RD_DETAIL_V32//CMCC_2ND_V17//CMCC_ONLINE_CHECK_V5
		paramJsonObj.put("appKey", appKey);
	    paramJsonObj.put("appSecret",
	    		//		"D78C393359BF128715C65D91C67051478A4DFC13");
	    	"7697CE9BB9D5A856CFDDE738320AD34EA53E483C");
	    
	   

		/**
		 * 	业务参数
		 */
		JSONObject dataJson = initMainServiceParamJsonObj_Realname(i);
		paramJsonObj.put("data", dataJson);

		return paramJsonObj;
	}

	/*
	 * 	初始化业务参数(实名认证)
	 *
	 *	 姓名,身份证,手机号
	 *
	 * @return
	 */
	public JSONObject initMainServiceParamJsonObj_Realname(int i) {
		/**
		 * 具体业务参数放在data中
		 */
		  JSONObject dataJson = new JSONObject();
	 /*     dataJson.put("id_number","45032719990321321X");
	      dataJson.put("name","刘伟");//"id_number":"131126199009280345","name":"王聪","mobile":"18322155936"
	      dataJson.put("mobile","18929408405");*///15201563103,,,15201563013
		  //"id_number":"131126199009280345","name":"王聪","mobile":"18322155936"
	     /* dataJson.put("name","3febda274935a59ce9ff44e2bd0f690aa33fe8ec2c7df3ce384ee0868126decf");
	      dataJson.put("id_number","bdbcb76a4c74b6f7770e469d647d30ae674b9d089e1cb01615cc46e258201255");
	      dataJson.put("mobile","54f3746ad9998989ebcb7a3444b5edb694314472cbb74a2fd6458dd64b378b02");
	      dataJson.put("encrypt","SHA256");*/
	      //dataJson.put("bank_card_number","6253624025440494");
          /*dataJson.put("name",MD5Util.MD5("周凤云"));
	      dataJson.put("id_number",MD5Util.MD5("370523197112090723"));
	      dataJson.put("mobile",MD5Util.MD5("13490329255"));*/
	     // dataJson.put("appkey","6222350107122010");
	   /*   dataJson.put("mobileCaller","13911084965");
	      dataJson.put("mobileCalled","13691459653");*/
		 /* List<String> list = new ArrayList<>();
			list.add("13752639577");
	        dataJson.put("msisdnmd5list",list);*/
		  dataJson.put("companyName","长沙争渡网络科技有限公司" +i);
		 // jb.put("tradeId", "3b904990aa4b461cad44ed6f4a8024e2");
		 // jb.put("tradeId", "a2acbcef11d547c3b425c31d53868a3e");
		 return dataJson;
	}

	/**
	 * 实现http post请求 注意编码 UTF-8
	 *
	 * @param url
	 * @param paramObj
	 * @return
	 */
	public String postClient(String url, JSONObject paramObj) {
		String str = "";
		HttpClient client = null;
		PostMethod method = null;
		try {
			client = new HttpClient();
			method = new PostMethod(url);
			method.setRequestHeader("Content-Type", "application/json;charset=utf-8");
			NameValuePair[] param = new NameValuePair[paramObj.size()];
			@SuppressWarnings("unchecked")
			Iterator<String> keys = paramObj.keys();
			int i = 0;
			while (keys.hasNext()) {
				String key = (String) keys.next();
				String value = paramObj.getString(key);
				param[i] = new NameValuePair(key, value);
				i++;
			}
			method.setRequestBody(param);
			client.executeMethod(method);
			str = convertStreamToString(method.getResponseBodyAsStream());
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (method != null) {
				method.releaseConnection();
			}
		}
		return str;
	}

	/**
	 * 流转字符串
	 *
	 * @param is
	 * @return
	 */
	public static String convertStreamToString(InputStream is) {
		BufferedReader reader = new BufferedReader(new InputStreamReader(is));
		StringBuilder builder = new StringBuilder();
		String line = null;
		try {
			while ((line = reader.readLine()) != null) {
				builder.append(line + "\n");
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				is.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return builder.toString();
	}

}
