httpclient-4.1.3结合dom4j的完整演示实例
2012-04-20 21:23
639 查看
package com.segsec.gisap; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.params.ConnRoutePNames; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import com.general.FormatUtil; public class PostXml { private static final SimpleDateFormat FormatTranslate = new SimpleDateFormat( "yyyy-MM-dd HH24:mm:ss"); private static final String userName = "****";// 用户名 private static final String password = "123456";// 密码 private static final String url = "http://218.206.70.***:10000/newpartner/partnerServlet";// 地址 public static void analysis(String soapContent) { Document dom = null; try { SAXReader sb = new SAXReader(); ByteArrayInputStream bais = new ByteArrayInputStream( soapContent.getBytes("gb2312")); dom = sb.read(bais); } catch (Exception e) { e.printStackTrace(); } List nodeList = dom.selectNodes("/yhjx_result/response/result"); Iterator it = nodeList.iterator(); while (it.hasNext()) { Element el = (Element) it.next(); Element result_id = (Element) el.selectNodes("result_id").get(0); System.out.println("result_id:" + result_id.getStringValue()); Element result_info = (Element) el.selectNodes("result_info") .get(0); System.out.println("result_info:" + result_info.getStringValue()); Element datetime = (Element) el.selectNodes("datetime").get(0); System.out.println("datetime:" + datetime.getStringValue()); Element msid = (Element) el.selectNodes("msid").get(0); System.out.println("msid:" + msid.getStringValue()); Element area_name = (Element) el.selectNodes("area_name").get(0); System.out.println("area_name:" + area_name.getStringValue()); Element img_url = (Element) el.selectNodes("img_url").get(0); System.out.println("img_url:" + img_url.getStringValue()); String longitude = request(img_url.getStringValue(), "longitude"); System.out.println("longitude:" + longitude); String latitude = request(img_url.getStringValue(), "latitude"); System.out.println("latitude:" + latitude); String area = request(img_url.getStringValue(), "area"); System.out.println("area:" + area); Element external_note = (Element) el.selectNodes("external_note") .get(0); System.out.println("external_note:" + external_note.getStringValue()); System.out .println("=================================================="); } } public static void dealXml(String soapContent) { Document dom = null; try { SAXReader sb = new SAXReader(); ByteArrayInputStream bais = new ByteArrayInputStream( soapContent.getBytes("gb2312")); dom = sb.read(bais); } catch (Exception e) { e.printStackTrace(); } List nodeList = dom.selectNodes("/yhjx_result/response/result"); Iterator it = nodeList.iterator(); while (it.hasNext()) { Element el = (Element) it.next(); String result_id = ((Element) el.selectNodes("result_id").get(0)) .getStringValue(); System.out.println("result_id:" + result_id); String result_info = ((Element) el.selectNodes("result_info") .get(0)).getStringValue(); System.out.println("result_info:" + result_info); String datetime = ((Element) el.selectNodes("datetime").get(0)) .getStringValue(); System.out.println("datetime:" + datetime); String msid = ((Element) el.selectNodes("msid").get(0)) .getStringValue(); System.out.println("msid:" + msid); String area_name = ((Element) el.selectNodes("area_name").get(0)) .getStringValue(); System.out.println("area_name:" + area_name); String img_url = ((Element) el.selectNodes("img_url").get(0)) .getStringValue(); System.out.println("img_url:" + img_url); String longitude = request(img_url, "longitude"); System.out.println("longitude:" + longitude); String latitude = request(img_url, "latitude"); System.out.println("latitude:" + latitude); String area = request(img_url, "area"); System.out.println("area:" + area); String external_note = ((Element) el.selectNodes("external_note") .get(0)).getStringValue(); System.out.println("external_note:" + external_note); System.out .println("=================================================="); } } public static String request(String url, String paraname) { String[] paras = url.substring(url.indexOf("?") + 1, url.length()) .split("&"); HashMap hm = new HashMap(); for (int i = 0; i < paras.length; i++) { String[] pm = splitByString(paras[i] + "=", "="); // 这里加一个"="是为了截取参数串 hm.put(pm[0], pm[1]); } return String.valueOf(hm.get(paraname)); } public static String[] splitByString(String str, String splitchar) { if (str == null) { return null; } int len = str.length(); if (len == 0) { return null; } List<String> list = new ArrayList<String>(); int i = 0, start = 0; while (i < len) { if (str.charAt(i) == splitchar.charAt(0)) { list.add(str.substring(start, i)); start = ++i; continue; } i++; } if (start != i) { list.add(str.substring(start, i)); } return (String[]) list.toArray(new String[list.size()]); } public static String HttpClientRequest(String mobile) { DefaultHttpClient httpclient = new DefaultHttpClient(); // 实例化一个HttpClient HttpPost post = new HttpPost(url); String resXml = ""; StringBuilder xmldata = new StringBuilder(); xmldata.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>"); xmldata.append("<yhjx_init>"); xmldata.append("<request>"); xmldata.append("<username>").append(userName).append("</username>"); xmldata.append("<password>").append(password).append("</password>"); xmldata.append("<type>muti_exact_locate</type>"); xmldata.append("<info>"); xmldata.append("<msid>").append(mobile).append("</msid>"); xmldata.append("<datetime>").append(FormatUtil.getLongTimeString()) .append("</datetime>"); xmldata.append("</info>"); xmldata.append("</request>"); xmldata.append("</yhjx_init>"); HttpResponse response = null; HttpEntity entity = null; // 以下两行设置通过代理访问(访问本机站点应去掉以下两行) HttpHost proxy = new HttpHost("10.10.228.43", 808, "http"); httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); try { resXml = URLEncoder.encode(xmldata.toString(), "GB2312"); } catch (UnsupportedEncodingException ex) { ex.printStackTrace(); } try { StringEntity requestEntity = new StringEntity(resXml, "text/xml", "GB2312"); post.setEntity(requestEntity); response = httpclient.execute(post); entity = response.getEntity(); // 返回服务器响应 System.out .println("--------------------HTTP头信息--------------------"); System.out.println(response.getStatusLine()); // 服务器返回状态 Header[] headers = response.getAllHeaders(); // 返回的HTTP头信息 for (int i = 0; i < headers.length; i++) { System.out.println(headers[i]); } System.out .println("---------------------显示服务器响应的HTML代码-------------------"); String responseString = null; if (response.getEntity() != null) { System.out.println("response.getEntity():" + response.getEntity()); responseString = EntityUtils.toString(response.getEntity()); // 返回服务器响应的HTML代码 System.out.println("responseString:" + responseString); try { resXml = URLDecoder.decode(responseString.toString(), "GB2312"); } catch (UnsupportedEncodingException ex) { ex.printStackTrace(); } System.out.println("返回的结果:" + resXml); // 打印出服务器响应的HTML代码 } System.out .println("---------------------完成服务器响应的HTML代码的显示-------------------"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (entity != null) try { entity.consumeContent(); } catch (IOException e) { e.printStackTrace(); } } System.out.println("Login form get: " + response.getStatusLine()); if (entity != null) { try { entity.consumeContent(); } catch (IOException e) { e.printStackTrace(); } } return resXml; } public static String CreateGpsInfo(String callletter, String lon, String lat, String gpstime, String referenceposition) { HashMap hm = new HashMap(); String Sn = ""; String Adminer = String.valueOf(hm.get("adminer")); String UnitID = String.valueOf(hm.get("unitid")); String CallLetter = callletter; String NumberPlate = String.valueOf(hm.get("numberplate")); String Lon = lon; String Lat = lat; String Course = "0"; String Speed = "0"; String Diff = "0"; String LocStatus = "1"; String ResposeID = "0"; String State = "33"; String GpsTime = gpstime; String IsAlarm = "0"; String ReferencePosition = referenceposition; String Content = ""; String VehicleKindid = "1"; String AlarmType = "100"; String bHIstoryRecord = ""; String AdminerID = String.valueOf(hm.get("adminerid")); String RoadType = "8"; String Lon1 = lon; String Lat1 = lat; String TotalDistance = "0"; String Temperature = "0"; String gpsinfo = Sn + "~" + Adminer + "~" + UnitID + "~" + CallLetter + "~" + NumberPlate + "~" + Lon + "~" + Lat + "~" + Course + "~" + Speed + "~" + Diff + "~" + LocStatus + "~" + ResposeID + "~" + State + "~" + GpsTime + "~" + IsAlarm + "~" + ReferencePosition + "~" + Content + "~" + VehicleKindid + "~" + AlarmType + "~" + bHIstoryRecord + "~" + AdminerID + "~" + RoadType + "~" + Lon1 + "~" + Lat1 + "~" + TotalDistance + "~" + Temperature; return gpsinfo; } public static void main(String[] args) throws Exception { String mobileno = "18605586755,13776602285,13913998079";// 手机号码 String rexml = HttpClientRequest(mobileno); dealXml(rexml); } }
相关文章推荐
- httpclient结合http报文查看工具的一个实例
- android通过okhttpClient下载网页内容的实例代码
- 动态链式队列详解及完整实例演示
- httpclient 多线程爬虫实例
- dom4j4.1.3解析XML字符串实例
- Windows下使用Java调用ElasticSearch提供的相关API进行数据搜索完整实例演示
- HttpClient下载图片和向服务器提交数据实例
- TNetHTTPClient演示
- httpClient 入门实例
- 实例简介HttpUnit结合JUnit自动测试Web应用
- 采用DOM4j操作XML数据库完整实例
- HttpClient通过Post上传文件的实例代码
- HTTP BASIC认证,抢先认证介绍和 HttpClient 4.1.1 实例
- HttpClient post 请求实例
- httpclient 实例
- Java网页数据抓取实例(httpclient4.2.1+jsoup1.7.2)
- HttpClient和服务器实例
- HttpClient下载图片和向服务器提交数据实例
- httpclient post请求实例(自己写的)
- gvoory脚本中关于HttpClient使用详解实例