COMPUTER_LZY

要输就输给追求,要嫁就嫁给幸福

导航

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()));  
     }  
}
 注意:一般情况下,需要你在项目中引用几个jar包的:
jackson-core-asl-1.4.0.jar,
jackson-mapper-asl-1.4.0.jar, 

 

json.jar

 

json-lib-2.4-jdk15.jar

由于我不知道如何上传附件,需要的朋友可以留个Email!

 

 

 

 

posted on 2011-03-15 15:40  CANYOUNG  阅读(3055)  评论(3编辑  收藏  举报