java 调用 webservice

只想调用远处webservice,不构建自己的,看了一些资料都是先构建,再请求。
webservice提供一种服务,暴露某个地址,调用也是http请求,客户端只要传递正确参数到服务端
能够解析调用的那个累的那个方法,获取参数后将响应信息组装给客户端,来回处理都是xml。请求webservice的例子

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;

public class InvokeWS {
public static void main(String[] args) {
try {
//以请求天气service为例
String point ="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx";
//初始化请求传送的soap信息 soap格式从上面网站可以查到
String soap = getSoapBody("济南");
//获取 建立至webservice节点的连接
URL url = new URL(point);
URLConnection con = url.openConnection();
con.setUseCaches(false);
con.setDoInput(true);
con.setDoOutput(true);
//设置请求header信息
con.setRequestProperty("Content-Type", "text/xml; charset=gbk");
con.setRequestProperty("Content-Length",String.valueOf(soap.length()));
con.setRequestProperty("SOAPAction", "http://WebXml.com.cn/getWeatherbyCityName");
//发送请求内容 soap至服务端
OutputStream out = con.getOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(out,"gbk");
writer.write(soap);
writer.flush();
writer.close();
//获取响应信息
InputStream in = con.getInputStream();
InputStreamReader reader = new InputStreamReader(in,"utf-8");
BufferedReader br = new BufferedReader(reader);
String str = br.readLine();
while(str !=null){
System.out.println(str);
str = br.readLine();
}
} catch (Exception e) {
e.printStackTrace();
}
}

private static String getSoapBody(String name){
StringBuffer sb = new StringBuffer();
sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sb.append("<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">");
sb.append("<soap:Body>");
sb.append("<getWeatherbyCityName xmlns=\"http://WebXml.com.cn/\">");
sb.append("<theCityName>").append(name).append("</theCityName>");
sb.append("</getWeatherbyCityName>");
sb.append("</soap:Body>");
sb.append("</soap:Envelope>");
return sb.toString();
}
}


返回信息:


<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<getWeatherbyCityNameResponse xmlns="http://WebXml.com.cn/">
<getWeatherbyCityNameResult>
<string>山东</string>
<string>济南</string>
<string>54823</string>
<string>54823.jpg</string>
<string>2013-1-7 10:51:13</string>
<string>-6℃/2℃</string>
<string>1月7日 多云转晴</string>
<string>南风微风</string>
<string>1.gif</string>
<string>0.gif</string>
<string>今日天气实况:气温:2℃;风向/风力:东南风 1级;湿度:35%;空气质量:较差;紫外线强度:最弱</string>
<string>穿衣指数:天气冷,建议着棉衣、皮夹克加羊毛衫等冬季服装。年老体弱者宜着厚棉衣或冬大衣。
过敏指数:天气条件极不易诱发过敏,可放心外出,享受生活。
运动指数:天气较好,但考虑天气寒冷,推荐您进行室内运动,户外运动时请注意保暖并做好准备活动。
洗车指数:适宜洗车,未来持续两天无雨天气较好,适合擦洗汽车,蓝天白云、风和日丽将伴您的车子连日洁净。
晾晒指数:天气不错,午后温暖的阳光仍能满足你驱潮消霉杀菌的晾晒需求。
旅游指数:白云飘飘,同时又有微风伴您一路同行。虽稍冷,但您仍可陶醉于大自然的美丽风光中。
路况指数:天气较好,路面比较干燥,路况较好。
舒适度指数:天气较冷,不很舒适,请注意适时添加衣物,以防感冒。
空气污染指数:气象条件较不利于空气污染物稀释、扩散和清除,请适当减少室外活动时间。
紫外线指数:属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。
</string>
<string>-8℃/1℃</string>
<string>1月8日 晴</string>
<string>无持续风向微风转北风微风</string>
<string>0.gif</string>
<string>0.gif</string>
<string>-7℃/1℃</string>
<string>1月9日 晴</string>
<string>北风微风转南风微风</string>
<string>0.gif</string>
<string>0.gif</string>
<string>济南是中国东部沿海经济大省--山东省的省会,位于山东省中西部,是全省的政治、经济、科技、文化中心和重要的交通枢纽。济南具有2000多年的历史,是中华文明的重要发祥地之一,中国原始部落的首领--舜(约公元前22世纪)就诞生与生活在济南一带。济南东郊的城子崖是中国新石器时代晚期以黑陶为标志的龙山文化(距今4600-4000年)的发现地,这里发现了中国最古老的城址约20万平方米。作为城市,济南已有4000多年的历史。济南文物古迹众多,有舜文化遗址(公元前22世纪)舜耕山,有先于秦长城的齐长城(公元前3世纪),中国最古老的地面房屋建筑--汉代孝堂山郭氏墓石祠(公元前1世纪),中国最古老的石塔--隋代柳埠四门塔(公元7世纪)和被誉为"海内第一名塑"的灵岩寺宋代彩塑罗汉(公元11世纪)等。济南自古素有“泉城”之美称。尤以趵突泉、黑虎泉、五龙潭、珍珠泉四大名泉久负盛名,自古就有“家家泉水,户户垂杨”之誉。济南拥有的泉水之多,流量之大,景色之美,独步天下。这些泉纵横分布,错落有致,既有趵突、黑虎、珍珠、五龙潭四大泉群,又有郊区泉群,誉称72名泉.趵突泉为72名泉之首,泉水分三股而淌。泉北有宋代建筑“泺源堂”,西南是明代建筑“观澜亭”,池东为“来鹤桥”,桥南立木牌楼,横额上书“洞天福地”、“蓬山旧迹”。清高宗乾隆南下游览,观趵突泉后大为兴奋,当即题“游湍”,封“天下第一泉”,留《趵突泉游记》石刻碑文。
</string>
</getWeatherbyCityNameResult>
</getWeatherbyCityNameResponse>
</soap:Body>
</soap:Envelope>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值