这些天在项目上领导要我写一个工具完成的功能大概就是调用别人服务的一个接口取得数据,然后保存到自己的表中。
通过访问接口我们得到的是一个xml格式的文件,所以我们要做的事情就是可以分为3个部分来进行。
第一:调用接口。
第二:取得返回的xml文件。
第三:解析xml文件,把数据保存。
调用接口我发现一般有两大类,http post/ get方式调用和webservice调用。
通过接口的url我发现。他采用的是http的方式。所以我悬着了使用http get方式的调用方式。
urlpath = "http://xxx.xxx.xxx/service/AddrCode/cmd? commandType=0&IsAccurate=false&AddrType=AllType&Start=0&Nums=1&encode=gbk&AddrName=" + URLEncoder.encode(addr, "GBK");
URL url = new URL(urlpath);
InputStream iStream = null;
String result = "";
// 打开连接
URLConnection con = url.openConnection();
con.setRequestProperty("Content-type", "application/x-java-serialized-object");
con.setDoOutput(true);
con.connect();
iStream = con.getInputStream();
result = processServerResponse((HttpURLConnection) con, iStream);
首先呢我们定义了一个url,接着我们用URLConnection打开连接,声明输入流进行读取返回的数据。
private static String processServerResponse(HttpURLConnection http,
InputStream iStrm) throws IOException {
if (http.getResponseCode() == HttpURLConnection.HTTP_OK) {
int length = http.getContentLength();
String str;
if (length != -1) {
byte servletData[] = new byte[length];
iStrm.read(servletData);
str = new String(servletData);
} else {
ByteArrayOutputStream bStrm = new ByteArrayOutputStream();
int ch;
while ((ch = iStrm.read()) != -1)
bStrm.write(ch);
str = new String(bStrm.toByteArray());
bStrm.close();
}
return str;
}
return null;
}
这个时候我们取得了返回的文件了,现在要做的就是解析这个文件把我们需要的数据保存起来。
readStringXML(result, ztid, ztmc,addr);
通过这个类我们解析它。
// 解析根据地址获得的xml文件
public void readStringXML(String xml, String ztid, String ztmc,String addr)
throws Exception {
Map map = new HashMap();
Document doc = null;
String x = "";
String y = "";
String address = addr;
String objid = ztid;
String objname = ztmc;
doc = DocumentHelper.parseText(xml);
Element root = doc.getRootElement();
List list = root.elements("row");
for (Iterator i = list.iterator(); i.hasNext();) {
Element row = (Element) i.next();
x = row.element("X0").getText();
y = row.element("Y0").getText();
//addr = row.element("地址标准名称").getText();
// 这里应该执行一条insert into 语句
String sql = "insert into gis(gisid,objid,objname,lon,lat,addr) values (sys_guid(),?,?,?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, objid);
ps.setString(2, objname);
ps.setString(3, x);
ps.setString(4, y);
ps.setString(5, address);
ps.executeUpdate();
}
}
通过这样的几个步骤之后我们就完成了。
但是在测试的过程中出现了些问题,我列举了出来。
第一:在接口的url后面的参数中由于是get请求方式会有包括中文的特殊字符,如果特殊字符没能解析出来后台会报一个505的错误。
这个时候我们就需要对特殊的字符进行一个编码转换。如URLEncoder.encode(addr, "GBK");这样机器就都能解析了。
第二:判断参数的非空。
分享到:
相关推荐
在MFC程序中实现HttpGet和HttpPost通信,你需要使用WinInet库,这是Windows系统自带的一个网络编程接口。首先,你需要设置HTTP请求的基本信息,如URL、请求方法(GET或POST)、头信息等。然后,通过InternetOpen函数...
本文将深入探讨如何使用C++语言通过WinInet库实现HTTP的POST请求,以及如何接收并解析XML数据。首先,我们需要了解HTTP POST请求的基本原理。 HTTP POST请求通常用于向服务器发送数据,比如用户填写表单后提交信息...
`XmlPullParser`是Android提供的一个接口,用于解析XML文档。在`XMLRequest`中,重写`parseNetworkResponse()`方法,这里我们将使用`XmlPullParserFactory`和`XmlPullParser`进行XML解析。 以下是一个简单的`...
在本文中,我们将深入探讨如何使用VC++实现HTTP的基本操作,包括POST、GET、PUT和DELETE,以及如何处理代理设置、读取HTTP头信息和解析HTML文档中的特定标签属性值。这些功能对于开发RESTful API客户端或者进行网络...
在iOS开发中,我们可以使用苹果提供的Foundation框架中的`NSXMLParser`类来解析XML数据。 1. **本地XML文件解析** - 使用`NSBundle`类获取资源:在iOS应用中,通常将XML文件作为资源文件打包在.app中。可以使用`...
3. **HTTP模拟**:允许用户发送HTTP请求,包括POST和GET,接收并解析XML响应。 4. **XPath查询**:支持使用XPath(XML路径语言)查找XML文档中的特定节点。 5. **XSLT转换**:可以应用XSLT(可扩展样式表语言转换)...
本篇文章将深入探讨如何使用Flex解析XML文件,并通过HTTPService来读取XML内容,以及如何根据需求过滤字符串并获取所需值。 首先,让我们了解Flex中的XML类。XML类是ActionScript 3.0中用于处理XML文档的主要工具,...
1.网页打不开的post不了,不存在的属性post不了,属性不区分大小写 2.post模式下内容格式要对,=赋值不能少 3.get模式下url=不能少 4.header 200表示响应成功,post 的内容要用web services readpostdata,两个VI...
首先,GET和POST是HTTP协议中的两种主要请求方法。GET通常用于获取资源,它将数据附加到URL上,以查询字符串的形式传递。而POST则常用于向服务器发送数据,如表单提交,数据被包含在请求正文中,这对于传输大量或...
- POST方法则是向服务器发送数据,通常用于提交表单或者上传文件。POST请求的数据不会显示在URL中,相对安全。 2. ASP.NET Web Service(ASMX): - ASMX是ASP.NET早期用于创建Web服务的技术,它基于SOAP协议,...
在PHP中,POST XML是一种常见的数据传输方式,特别是在API接口开发和服务器间的数据交互中。XML(eXtensible Markup Language)是一种结构化的数据格式,它允许开发者清晰地定义数据结构,而POST则是HTTP协议中用于...
3. **获取XML文件**:Servlet可能从HTTP请求的POST或GET参数中接收XML数据,或者从服务器上的文件系统中读取XML文件。使用`HttpServletRequest`对象来获取XML数据。 4. **创建SAX解析器**:使用`SAXParserFactory`...
当需要与服务器交换结构化的XML数据时,可以使用`org.xmlpull.v1.XmlPullParserFactory`和`XmlPullParser`解析XML,然后通过`HttpURLConnection`或第三方库如`Volley`、`OkHttp`发送: ```java String xmlData = ...
本篇文章将深入解析XML流的概念,并结合相关工具探讨其在实际开发中的应用。 XML流主要分为两种类型:SAX(Simple API for XML)和DOM(Document Object Model)。SAX是一种基于事件驱动的解析方式,它逐行读取XML...
Android中解析XML主要有两种方法:DOM(Document Object Model)和SAX(Simple API for XML)。每种方法都有其适用场景和优缺点。 1. DOM解析: DOM解析器会将整个XML文档加载到内存中,形成一个树形结构,称为DOM...
通过以上内容,我们可以看到使用JavaScript读取和解析XML文件的过程并不复杂。主要步骤包括创建`XMLHttpRequest`对象、发送请求、接收响应并将数据展示在页面上。这种方法非常适合于动态网页应用,能够提高用户体验...
- **SAX解析**:SAX解析器通过事件驱动的方式解析XML,你需要实现ContentHandler接口。以下是一个简单的例子: ```java DefaultHandler handler = new DefaultHandler() { @Override public void startElement...
HTTPService是Flex提供的一个组件,它允许我们与HTTP服务器通信,发送GET或POST请求,并接收响应。在Flex界面中添加HTTPService组件,配置其URL以指向服务器上的XML数据源,然后设置result事件监听器,以便在接收到...