您的位置:首页 > 理论基础 > 计算机网络

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);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息