import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.http.HttpException;
import org.apache.http.entity.StringEntity;
import net.sf.json.JSONObject;
public class TrainSearch {
public static void main(String[] args) throws HttpException, UnsupportedEncodingException {
// String url=“http://api.shujuzhihui.cn/api/airquality/allcity”;
String urldata=“http://api.shujuzhihui.cn/api/premises/img_type”;
Map<String, String> params = new HashMap<String, String>();
//查询空气质量
//params.put(“appKey”, “ee1fbea764bf49418f7bb0bd02ccd539”);
//查询各地楼盘
params.put(“appKey”, “e2b8e4bf87a74476a748f9ced47085e2”);
params.put(“house_id”, “123”);
//查询各地
String privicesurl=“http://api.shujuzhihui.cn/api/search/train”;
params.put(“appKey”, “732b48d3bb704c9b864edc08b8caa9d8”);
params.put(“train_date”, “2018-12-7”);
params.put(“from_station_name”, “上海南”);
params.put(“to_station_name”, “九江”);
String result=doPost(privicesurl,params);
System.out.println(result);
getRequest6();
}
public static String net(String strUrl, Map params,String method) throws Exception {
HttpURLConnection conn = null;
BufferedReader reader = null;
String rs = null;
try {
StringBuffer sb = new StringBuffer();
if(method==null || method.equals("GET")){
strUrl = strUrl+"?"+urlencode(params);
}
URL url = new URL(strUrl);
conn = (HttpURLConnection) url.openConnection();
if(method==null || method.equals("GET")){
conn.setRequestMethod("GET");
}else{
conn.setRequestMethod("POST");
conn.setDoOutput(true);
}
conn.setUseCaches(false);
conn.setInstanceFollowRedirects(false);
conn.connect();
if (params!= null && method.equals("POST")) {
try {
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
out.writeBytes(urlencode(params));
} catch (Exception e) {
// TODO: handle exception
}
}
InputStream is = conn.getInputStream();
reader = new BufferedReader(new InputStreamReader(is));
String strRead = null;
while ((strRead = reader.readLine()) != null) {
sb.append(strRead);
}
rs = sb.toString();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
reader.close();
}
if (conn != null) {
conn.disconnect();
}
}
return rs;
}
public static String urlencode(Map<String,String> data) {
StringBuilder sb = new StringBuilder();
for (Map.Entry i : data.entrySet()) {
try {
sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return sb.toString();
}
public static void getRequest6(){
String result =null;
String url ="http://apis.juhe.cn/train/ticket.cc.php";//请求接口地址
Map<String,String> params = new HashMap();//请求参数
params.put("from","北京");//出发站名称:如上海虹桥
params.put("to","上海");//到达站名称:如温州南
params.put("date","2018-12-7");//默认当天,格式:2014-07-11
params.put("tt","G");//车次类型,默认全部,如:G(高铁)、D(动车)、T(特快)、Z(直达)、K(快速)、Q(其他)
params.put("key","732b48d3bb704c9b864edc08b8caa9d8");//应用APPKEY(应用详细页查询)
try {
result =net(url, params, "GET");
JSONObject object = JSONObject.fromObject(result);
if(object.getInt("error_code")==0){
System.out.println(object.get("result"));
}else{
System.out.println(object.get("error_code")+":"+object.get("reason"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static String doPost(String url, Map<String, String> paramMap) {
// 获取输入流
InputStream is = null;
BufferedReader br = null;
String result = null;
// 创建httpClient实例对象
HttpClient httpClient = new HttpClient();
// 设置httpClient连接主机服务器超时时间:15000毫秒
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000);
// 创建post请求方法实例对象
PostMethod postMethod = new PostMethod(url);
// 设置post请求超时时间
postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000);
NameValuePair[] nvp = null;
// 判断参数map集合paramMap是否为空
if (null != paramMap && paramMap.size() > 0) {// 不为空
// 创建键值参数对象数组,大小为参数的个数
nvp = new NameValuePair[paramMap.size()];
// 循环遍历参数集合map
Set<Entry<String, String>> entrySet = paramMap.entrySet();
// 获取迭代器
Iterator<Entry<String, String>> iterator = entrySet.iterator();
int index = 0;
while (iterator.hasNext()) {
Entry<String, String> mapEntry = iterator.next();
// 从mapEntry中获取key和value创建键值对象存放到数组中
try {
nvp[index] = new NameValuePair(mapEntry.getKey(),
new String(mapEntry.getValue().toString().getBytes("UTF-8"), "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
index++;
}
}
// 判断nvp数组是否为空
if (null != nvp && nvp.length > 0) {
// 将参数存放到requestBody对象中
postMethod.setRequestBody(nvp);
}
// 执行POST方法
try {
int statusCode = httpClient.executeMethod(postMethod);
// 判断是否成功
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method faild: " + postMethod.getStatusLine());
}
// 获取远程返回的数据
is = postMethod.getResponseBodyAsStream();
// 封装输入流
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
StringBuffer sbf = new StringBuffer();
String temp = null;
while ((temp = br.readLine()) != null) {
sbf.append(temp).append("\r\n");
}
result = sbf.toString();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭资源
if (null != br) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != is) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// 释放连接
postMethod.releaseConnection();
}
return result;
}
public static String postRequest(String url, Map<String, String> params) throws HttpException {
//构造HttpClient的实例
HttpClient httpClient = new HttpClient();
//创建POST方法的实例
PostMethod postMethod = new PostMethod(url);
//设置请求头信息
StringEntity stringEntity=new StringEntity(params.toString(),"GBk");
postMethod.setRequestHeader("Connection", "close");
//添加参数
for (Map.Entry<String, String> entry : params.entrySet()) {
postMethod.addParameter(entry.getKey(), entry.getValue());
}
//使用系统提供的默认的恢复策略,设置请求重试处理,用的是默认的重试处理:请求三次
httpClient.getParams().setBooleanParameter("http.protocol.expect-continue", false);
//接收处理结果
String result = null;
try {
//执行Http Post请求
httpClient.executeMethod(postMethod);
//返回处理结果
result = postMethod.getResponseBodyAsString();
} catch (IOException e) {
// 发生网络异常
System.out.println("发生网络异常!");
e.printStackTrace();
} finally {
//释放链接
postMethod.releaseConnection();
}
return result;
}
}