用HTTP GET调用web service(Java、Groovy两个版本)

下面的网址提供了国内飞机航班时刻表 WEB 服务
http://webservice.webxml.com.cn/webservices/DomesticAirline.asmx

wsdl如下:
http://webservice.webxml.com.cn/webservices/DomesticAirline.asmx?wsdl

调用web service可以采用很多方式 比如axis2、xfire、cxf都可以根据wsdl反向生成客户端代码 简化开发

下面我采用的是http get的方式调用其web service,采用的是HttpClient4
import java.net.URLEncoder; 

import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpProtocolParams;

/**
* @author Tony Shen
*
*/
public class DomesticAirlineTest {
public static void main(String[] args) throws Exception{
String url = "/webservices/DomesticAirline.asmx/getDomesticAirlinesTime";
String host = "www.webxml.com.cn";
String param = "startCity="+URLEncoder.encode("北京", "utf-8")+"&lastCity="+URLEncoder.encode("上海", "utf-8")+"&theDate=&userID=";

HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(HttpProtocolParams.HTTP_CONTENT_CHARSET,"UTF-8");

HttpGet httpget = new HttpGet("http://"+host+url+"?"+param);

ResponseHandler responseHandler = new BasicResponseHandler();
String responseBody = httpclient.execute(httpget, responseHandler);
System.out.println(responseBody);
httpclient.getConnectionManager().shutdown();
}
}



Groovy版本,主要使用了groovy的HTTPBuilder,需要这个jar
import groovyx.net.http.HTTPBuilder 
import static groovyx.net.http.Method.GET
import static groovyx.net.http.ContentType.TEXT

def url = "/webservices/DomesticAirline.asmx/getDomesticAirlinesTime";
def host = "www.webxml.com.cn";
def param = "startCity="+URLEncoder.encode("北京", "utf-8")+"&lastCity="+URLEncoder.encode("上海", "utf-8")+"&theDate=&userID=";

def http = new HTTPBuilder("http://"+host+url+"?"+param)
http.request(GET,TEXT) {req ->
headers.'User-Agent' = 'Mozilla/5.0'
response.success = { resp,reader ->
println resp
System.out << reader
}
}

你可能感兴趣的:(Groovy,on,Grails)