axis2调用webservicee 服务很不稳定 是咋回事

好多人要老问我,今天上代码,Copy到工程就用了
import java.text.SimpleDateFimport java.util.Cimport java.util.D
public class DateUtils {
public static String getWeekOfDate(Date dt) {
String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w & 0)
return weekDays[w];}
public static String getYear(){
Calendar calendar = Calendar.getInstance();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String time = format.format(calendar.getTime());
import java.io.IOEimport java.io.InputSimport java.io.UnsupportedEncodingEimport java.net.MalformedURLEimport java.net.URL;import java.net.URLCimport java.util.ArrayLimport java.util.Dimport java.util.L
import javax.xml.parsers.DocumentBimport javax.xml.parsers.DocumentBuilderFimport javax.xml.parsers.ParserConfigurationE
import org.w3c.dom.DOMEimport org.w3c.dom.Dimport org.w3c.dom.Nimport org.w3c.dom.NodeLimport org.xml.sax.SAXE
public class weather {
private static String SERVICES_HOST = ".cn";
private static String WEATHER_SERVICES_URL = ".cn/WebServices/WeatherWS.asmx/";
private static String WEATHER_QUERY_URL = WEATHER_SERVICES_URL
+ "getWeather?theUserID=&theCityCode=";
* 城市代码 / 镇江: 1954
private static int CITICODE = 1954;
public static void main(String[] args) throws Exception {
String desc = "今天是" +DateUtils.getYear()
+ DateUtils.getWeekOfDate(new Date());
desc += new weather().getWeatherStr();
System.out.println(desc);
public InputStream getSoapInputStream(String url) {
InputStream inputStream =
URL urlObj = new URL(url);
URLConnection urlConn = urlObj.openConnection();
urlConn.setRequestProperty("Host", SERVICES_HOST); // 具体webService相关
urlConn.connect();
inputStream = urlConn.getInputStream();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
return inputS
public String getWeatherStr() {
String desc = "";
List&String& weatherList = getWeather(CITICODE);
if (weatherList != null && weatherList.size() & 7) {
String tianqi = weatherList.get(7);
if (tianqi.contains("日")) {
tianqi = tianqi.substring(tianqi.indexOf("日") + 1);
String wendu = weatherList.get(8);
desc += ",天气" +
desc += " ,";
desc += wendu.replace("℃", "度").replace("/", "--");
} catch (Exception e) {
e.printStackTrace();
public List&String& getWeather(int cityCode) {
List&String& weatherList = new ArrayList&String&();
DocumentBuilderFactory documentBF = DocumentBuilderFactory.newInstance();
documentBF.setNamespaceAware(true);
DocumentBuilder documentB = documentBF.newDocumentBuilder();
InputStream inputStream = getSoapInputStream(WEATHER_QUERY_URL + cityCode);
document = documentB.parse(inputStream);
NodeList nl = document.getElementsByTagName("string");
int len = nl.getLength();
for (int i = 0; i & i++) {
Node n = nl.item(i);
String weather = n.getFirstChild().getNodeValue();
weatherList.add(weather);
inputStream.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (DOMException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
return weatherL
下面是介绍
今天遇到的需求是显示一个&今天是星期五 日 天气晴,19-25度&这样的网站提示信息。
需要用到公共的天气预报webservice。
public&class&WeatherService&{&
&&private&static&String&SERVICES_HOST&=&".cn";&
&&private&static&String&WEATHER_SERVICES_URL&=&".cn/WebServices/WeatherWS.asmx/";&
&&private&static&String&WEATHER_QUERY_URL&=&WEATHER_SERVICES_URL&+&"getWeather?theUserID=&theCityCode=";&
&&private&static&int&CITICODE&=&1582;&
&&public&static&void&main(String[]&args)&throws&Exception&{&
&&&&String&desc&=&"今天是星期"&+&DateUtils.getCurrentWeek()&+&"&"&+&DateUtils.getCurrent("yyyy年MM月dd日")&+&"&";&
&&&&desc&+=&new&WeatherService().getWeatherStr();&
&&&&System.out.println(desc);&
&&public&InputStream&getSoapInputStream(String&url)&{&
&&&&InputStream&inputStream&=&null;&
&&&&try&{&
&&&&&&URL&urlObj&=&new&URL(url);&
&&&&&&URLConnection&urlConn&=&urlObj.openConnection();&
&&&&&&urlConn.setRequestProperty("Host",&SERVICES_HOST);&&
&&&&&&urlConn.connect();&
&&&&&&inputStream&=&urlConn.getInputStream();&
&&&&}&catch(MalformedURLException&e)&{&
&&&&&&e.printStackTrace();&
&&&&}&catch(IOException&e)&{&
&&&&&&e.printStackTrace();&
&&&&return&inputS&
&&public&String&getWeatherStr()&{&
&&&&String&desc&=&"";&
&&&&try&{&
&&&&&&List&String&&weatherList&=&getWeather(CITICODE);&
&&&&&&if(weatherList&!=&null&&&&weatherList.size()&& 7)&{&
&&&&&&&&String&tianqi&=&weatherList.get(7);&
&&&&&&&&if(tianqi.contains("日"))&{&
&&&&&&&&&&tianqi&=&tianqi.substring(tianqi.indexOf("日")&+&1);&
&&&&&&&&}&
&&&&&&&&String&wendu&=&weatherList.get(8);&
&&&&&&&&desc&+=&"天气"&+&&
&&&&&&&&desc&+=&"&,";&
&&&&&&&&desc&+=&wendu.replace("℃",&"度").replace("/",&"-");&
&&&&}&catch(Exception&e)&{&
&&&&&&e.printStackTrace();&
&&&&&&return&&
&&&&return&&
&&public&List&String&&getWeather(int&cityCode)&{&
&&&&List&String&&weatherList&=&new&ArrayList&String&();&
&&&&Document&&
&&&&DocumentBuilderFactory&documentBF&=&DocumentBuilderFactory.newInstance();&
&&&&documentBF.setNamespaceAware(true);&
&&&&try&{&
&&&&&&DocumentBuilder&documentB&=&documentBF.newDocumentBuilder();&
&&&&&&InputStream&inputStream&=&getSoapInputStream(WEATHER_QUERY_URL&+&cityCode);&
&&&&&&document&=&documentB.parse(inputStream);&
&&&&&&NodeList&nl&=&document.getElementsByTagName("string");&
&&&&&&int&len&=&nl.getLength();&
&&&&&&for(int&i&=&0;&i&&&&i++)&{&
&&&&&&&&Node&n&=&nl.item(i);&
&&&&&&&&String&weather&=&n.getFirstChild().getNodeValue();&
&&&&&&&&weatherList.add(weather);&
&&&&&&inputStream.close();&
&&&&}&catch(UnsupportedEncodingException&e)&{&
&&&&&&e.printStackTrace();&
&&&&}&catch(DOMException&e)&{&
&&&&&&e.printStackTrace();&
&&&&}&catch(ParserConfigurationException&e)&{&
&&&&&&e.printStackTrace();&
&&&&}&catch(SAXException&e)&{&
&&&&&&e.printStackTrace();&
&&&&}&catch(IOException&e)&{&
&&&&&&e.printStackTrace();&
&&&&return&weatherL&
这里的citycode是城市代码,由于我只要用武汉的,这里已经定义好了,大家想找自己的城市,可以去这里查:
获得省份通过,然后根据省ID获得CityCode&
说下程序:
这个服务的返回结果是xml,如下:
&version="1.0"&encoding="UTF-8"&
&xmlns=".cn/"&xmlns:xsd="http://www.w3.org/2001/XMLSchema"&
&&&&xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&
&&&&57494&
&&&&57494.jpg&
&&&&&16:32:58&
&&&&29℃/35℃&
&&&&7月11日&多云&
&&&&无持续风向微风&
&&&&1.gif&
&&&&1.gif&
&&&&今日天气实况:气温:34℃;风向/风力:西南风&3级;湿度:60%;空气质量:较差;紫外线强度:中等&
&&&&穿衣指数:天气炎热,建议着短衫、短裙、短裤、薄型T恤衫、敞领短袖棉衫等清凉夏季服装。&
&&&&&&&&感冒指数:各项气象条件适宜,发生感冒机率较低。但请避免长期处于空调房间中,以防感冒。&
&&&&&&&&运动指数:天气较好,无雨水困扰,但考虑气温很高,请注意适当减少运动时间并降低运动强度,运动后补充水分。&
&&&&&&&&洗车指数:较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。&
&&&&&&&&晾晒指数:天气不错,适宜晾晒。赶紧把久未见阳光的衣物搬出来吸收一下太阳的味道吧!&
&&&&&&&&旅游指数:多云,同时有微风相伴,但温度较高,天气热,请尽量避免高温时段外出,若外出请注意防暑降温和防晒。&
&&&&&&&&路况指数:天气较好,路面比较干燥,路况较好,不过天气有点热,定期让车辆休息。&
&&&&&&&&舒适度指数:天气炎热,且空气湿度较大,会使您感到很闷热,很不舒适。&
&&&&&&&&空气污染指数:气象条件较不利于空气污染物稀释、扩散和清除,请适当减少室外活动时间。&
&&&&&&&&紫外线指数:属中等强度紫外线辐射天气,外出时建议涂擦SPF高于15、PA+的防晒护肤品,戴帽子、太阳镜。&
&&&&26℃/34℃&
&&&&7月12日&阴转小雨&
&&&&无持续风向微风&
&&&&2.gif&
&&&&7.gif&
&&&&25℃/30℃&
&&&&7月13日&大雨转小雨&
&&&&无持续风向微风&
&&&&9.gif&
&&&&7.gif&
&&&&武汉市位于江汉平原东部,长江中游与长江、汉水交汇处。东经113&41&-115&05&,北纬29&58&-31&22&。武汉市地理位置优越,长江及其最大支流汉江交汇于此,将武汉市区天然分成汉口、汉阳和武昌三镇,武汉是我国水陆交通枢纽,控长江中游之咽喉,扼南北交通之要冲,素有&九省通衢&之称,现全市货运吞吐量达亿吨以上。优越的地理位置,成为历代兵家争夺的战略要地。三国时,武汉东湖附近曾是刘备、孙权、曹操进行军事、政治活动的场所,现在留下的有刘备郊天台、吴王庙、曹操庙、洪山宝塔等古建筑。武汉现已发展为中国中部地区工业、金融、商业、科学、文化教育中心。武汉市属亚热带湿润季风气候,雨量充沛、日照充足,四季分明。总体气候环境良好,近几年30年来,年均降雨量1269毫米,且多集中在6-8月。年均气温15.8℃-17.5℃,年无霜期一般为211天-272天,年日照总时数1810小时-2100小时。景观:武当山、长江三峡、神农架等。&
由于这里我只需要显示今天的天气,所以对string提取了7和8那两段进行处理。
测试:执行main方法,结果如下:
今天是星期三 日 天气 多云 ,29度-35度
阅读(...) 评论()org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Unexpected character 'E' (code 69) expected '&'
at [row,col {unknown-source}]: [1,1]
org.codehaus.xfire.fault.XFireFault: Unexpected character 'E' (code 69) expected '&'
at [row,col {unknown-source}]: [1,1]
at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)
at org.codehaus.xfire.client.Client.onReceive(Client.java:410)
at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:139)
at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)
at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
at org.codehaus.xfire.client.Client.invoke(Client.java:336)
at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)
at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
at $Proxy12.addQualification(Unknown Source)
at wsclient.TeachCenterClient.main(TeachCenterClient.java:157)
Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character 'E' (code 69) expected '&'
at [row,col {unknown-source}]: [1,1]
at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:623)
at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2047)
at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)
at org.codehaus.xfire.soap.handler.ReadHeadersHandler.invoke(ReadHeadersHandler.java:44)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Client.onReceive(Client.java:406)
... 11 more
调用webservice 服务很不稳定& webservice 是部署在was6.1 上的,且是在liux 上, 调用时 有时候成功 有时候失败 很不稳定。。
目前还没有答案
已解决问题
未解决问题WebService函数每调用一次,WebService的DLL就被加载一次,是怎么回事?
[问题点数:100分,结帖人csoapy]
WebService函数每调用一次,WebService的DLL就被加载一次,是怎么回事?
[问题点数:100分,结帖人csoapy]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2009年2月 .NET技术大版内专家分月排行榜第三
2009年2月 .NET技术大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。调用webservice 服务很不稳定 是咋回事_百度知道
调用webservice 服务很不稳定 是咋回事
提问者采纳
望采纳?或者在浏览器里访问那个地址看能否出现xml页面看到ping通要连的webService的ip吗,报这个错一般是网络不通或端口不对的问题 打字不易,如满意
来自团队:
其他类似问题
为您推荐:
webservice的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁> 怎么实现在webservice里有一个方法,当webservice运行起时就会不断的执行,而不是调用接口时他才执行
怎么实现在webservice里有一个方法,当webservice运行起时就会不断的执行,而不是调用接口时他才执行
huzhenxing0827 & &
发布时间: & &
浏览:32 & &
回复:2 & &
悬赏:0.0希赛币
如何实现在webservice里有一个方法,当webservice运行起时就会不断的执行,而不是调用接口时他才执行我用webservice弄了个服务端(以下称为DCCS),现在有一个存活包机制的问题困扰了我,客服端(CLIENT)会每隔30秒给我发包调用我的一个接口,包内就包含user_id,我接收到数据就会在数据库的存活表里找到这个userid,并且更新表里这个用户的存活时间为他发包给我的时间,DCCS里还有另一个方法judgeIsLive(),这个方法是检测这个用户是否存活,判断功能是取出存活表里的存活时间和现在时间来相减,得到相差的秒数,如果相差时间大于50秒,那么我就把存活表里的这个用户给删除掉,现在我的问题是judgeIslive()这个方法我是开一个线程,想让他在后台不断执行,不断去判断,可是确实现不了,这个方法只有在调用webservice接口时,开的这个线程才会去执行,当接口调用结束,那么这个方法也就不执行了,就算写了死循环也不行,我想要的就是只要webservice一运行起来,那个judgeislive()这个方法就一直执行,而不是说要调用接口他才执行谢谢大家!
WebService启动(初始化)时自己调用一下运行起来就可以了。
huzhiyong0311 & &
& & (0)(0)
给你的web service项目加一个全局应用类,生成global.asax和global.asax.cs,在application_start方法里启动judgeIsLive()huzhiyu & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-

我要回帖

更多关于 webservice接口调用 的文章

 

随机推荐