java应用程序获取ArcGIS REST服务
由于项目需要,需要在JAVA应用程序(非Web页面)中通过ArcGIS REST服务获取一定范围内的居民点信息。作为REST服务,它传送数据的格式有HTML(默认)和JSON格式,下面是用java获取JSON格式的REST服务的代码:
package com.javaeedev;
import java.util.HashMap;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.JsonToken;
import org.codehaus.jackson.map.MappingJsonFactory;
public class json4 {
private static String URL = "http://m.weather.com.cn/data/101070201.html";// 请求的地址,一个返回JSON格式数据地址
private static HttpClient client;
private static GetMethod getMethod;
/**
* 静态块初始化所需对象
*/
static {
client = new HttpClient();
//设置代理,如果没有使用代理,略去该句
client.getHostConfiguration().setProxy("10.60.30.90", 3128);
getMethod = new GetMethod(URL);
}
/**
* 获取获得的Json结果
*
* @return
*/
public static String getJsonText() {
System.out.println("json2");
String jsonText = null;
try {
System.out.println("1"+jsonText);
int status = client.executeMethod(getMethod);
System.out.println(status);
if (status == HttpStatus.SC_OK) {// HTTP 200 OK
jsonText = getMethod.getResponseBodyAsString();// 获取字符串形式的结果,建议使用流式结果
}
} catch (Exception e) {
System.out.println("2"+jsonText);
System.err.println(e);
}
System.out.println("3"+jsonText);
return jsonText;
}
/**
* 处理Json结果并封装Bean
*
* @param jsonText
* @return
*/
public static Weather getWeatherBean(String jsonText) {
System.out.println("json3");
// Weather对象
Weather weather = new Weather();
System.out.println(jsonText);
try {
JsonFactory jsonFactory = new MappingJsonFactory();
// Json解析器
JsonParser jsonParser = jsonFactory.createJsonParser(jsonText);
// 跳到结果集的开始
jsonParser.nextToken();
// 接受结果的HashMap
HashMap<String, String> map = new HashMap<String, String>();
// while循环遍历Json结果
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
// 跳转到Value
jsonParser.nextToken();
// 将Json中的值装入Map中
map.put(jsonParser.getCurrentName(), jsonParser.getText());
}
// 将数据封装
weather.setCity(map.get("city"));
weather.setDate(map.get("date_y"));
weather.setLunarDate(map.get("date"));
weather.setWeek(map.get("week"));
weather.setFcTime(map.get("fchh"));
weather.setTemperature(map.get("temp1"));
weather.setWeather(map.get("weather1"));
weather.setWind(map.get("wind1"));
} catch (Exception e) {
System.err.println(e);
}
return weather;
}
/**
* 主函数
*
* @param args
*/
public static void main(String[] args) {
System.out.println("json1");
System.out.println(getWeatherBean(getJsonText()));
}
}
import java.util.HashMap;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.JsonToken;
import org.codehaus.jackson.map.MappingJsonFactory;
public class json4 {
private static String URL = "http://m.weather.com.cn/data/101070201.html";// 请求的地址,一个返回JSON格式数据地址
private static HttpClient client;
private static GetMethod getMethod;
/**
* 静态块初始化所需对象
*/
static {
client = new HttpClient();
//设置代理,如果没有使用代理,略去该句
client.getHostConfiguration().setProxy("10.60.30.90", 3128);
getMethod = new GetMethod(URL);
}
/**
* 获取获得的Json结果
*
* @return
*/
public static String getJsonText() {
System.out.println("json2");
String jsonText = null;
try {
System.out.println("1"+jsonText);
int status = client.executeMethod(getMethod);
System.out.println(status);
if (status == HttpStatus.SC_OK) {// HTTP 200 OK
jsonText = getMethod.getResponseBodyAsString();// 获取字符串形式的结果,建议使用流式结果
}
} catch (Exception e) {
System.out.println("2"+jsonText);
System.err.println(e);
}
System.out.println("3"+jsonText);
return jsonText;
}
/**
* 处理Json结果并封装Bean
*
* @param jsonText
* @return
*/
public static Weather getWeatherBean(String jsonText) {
System.out.println("json3");
// Weather对象
Weather weather = new Weather();
System.out.println(jsonText);
try {
JsonFactory jsonFactory = new MappingJsonFactory();
// Json解析器
JsonParser jsonParser = jsonFactory.createJsonParser(jsonText);
// 跳到结果集的开始
jsonParser.nextToken();
// 接受结果的HashMap
HashMap<String, String> map = new HashMap<String, String>();
// while循环遍历Json结果
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
// 跳转到Value
jsonParser.nextToken();
// 将Json中的值装入Map中
map.put(jsonParser.getCurrentName(), jsonParser.getText());
}
// 将数据封装
weather.setCity(map.get("city"));
weather.setDate(map.get("date_y"));
weather.setLunarDate(map.get("date"));
weather.setWeek(map.get("week"));
weather.setFcTime(map.get("fchh"));
weather.setTemperature(map.get("temp1"));
weather.setWeather(map.get("weather1"));
weather.setWind(map.get("wind1"));
} catch (Exception e) {
System.err.println(e);
}
return weather;
}
/**
* 主函数
*
* @param args
*/
public static void main(String[] args) {
System.out.println("json1");
System.out.println(getWeatherBean(getJsonText()));
}
}
jackson-core-asl-1.4.0.jar,
jackson-mapper-asl-1.4.0.jar,
json.jar
json-lib-2.4-jdk15.jar
由于我不知道如何上传附件,需要的朋友可以留个Email!