java调用.net的webservice

java调用.net的webservice

ID:6031936

大小:35.78 KB

页数:7页

时间:2017-12-31

上传者:U-2437
java调用.net的webservice_第1页
java调用.net的webservice_第2页
java调用.net的webservice_第3页
java调用.net的webservice_第4页
java调用.net的webservice_第5页
资源描述:

《java调用.net的webservice》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

 最近做的项目都是同webService有关的,自然就要关心一下webservice方面的资源。http://www.wopos.com/webservice/Weather.asmx?op=getWeather是一个天气预报的webservice,从它的输出结果来看天气数据应该来自中央气象局的问天网http://www.tq121.com.cn/不过这方面就不用再多关心了,我们关心的是怎样调用这个webservice。       首先登录www.wopos.com/webservice/Weather.asmx?op=getWeather。可以看到如下的SOAP信息 请求:以下内容为程序代码:POST /webservice/Weather.asmx http/1.1Host: www.wopos.comContent-Type: text/xml; charset=utf-8Content-Length: lengthSOAPAction: "http://tempuri.org/getWeather"             string      把XML部分全部复制下来创建一个XML文件(普通的文本文件也可以),为了以后编程方便,把以下内容为程序代码:                       ...      string                        ...改成以下内容为程序代码:                      ...      ${city}$                        ...以weathersoap.xml保存在以后生成的类的同一目录。响应:以下内容为程序代码:http/1.1 200 OKContent-Type: text/xml; charset=utf-8Content-Length: length             string      这里的getWeatherResult这个就是要被调用的方法的名字在后面对XML的解释要用到响应部分的XML描述        接下就开始写代码了。以下内容为程序代码:package jaqcy.weatherreport.client;import java.io.*;import java.net.*;import javax.xml.parsers.*;import org.w3c.dom.*;/** *//** * * @author jaqcy */public class WeatherReport {        private static String getSoapRequest(String city)//city为要查询天气的城市名    {        try         {            Class cls=Object.class;            InputStreamReader isr=new InputStreamReader(cls.getResourceAsStream("/jaqcy/weatherreport/client/weathersoap.xml"));//读取存在weathersoap的SOAP信息             BufferedReader reader=new BufferedReader(isr);            String soap="";            String tmp;            while((tmp=reader.readLine())!=null)            {                soap+=tmp;            }                        reader.close();            isr.close();//如果有多个参数可以连续replace            return soap.replace("${city}$",city);//用传入的参数city替换原来的${city}$        }         catch (Exception ex)         {            ex.printStackTrace();            return null;        }    }  /**//*    *返回InputStream是因为w3c DOM中Document的parse方法可    *以接受InputStream类型的参数,方面在下一步对XML的解释    */    private static InputStream getSoapInputStream(String city)throws Exception    {        try        {            String soap=getSoapRequest(city);            if(soap==null)            {                return null;            }            URL url=new URL("http://www.wopos.com/webservice/Weather.asmx");            URLConnection conn=url.openConnection();            conn.setUseCaches(false);            conn.setDoInput(true);            conn.setDoOutput(true);            conn.setRequestProperty("Content-Length", Integer.toString(soap.length()));            conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");             conn.setRequestProperty("SOAPAction",""http://tempuri.org/getWeather"");            OutputStream os=conn.getOutputStream();            OutputStreamWriter osw=new OutputStreamWriter(os,"utf-8");            osw.write(soap);            osw.flush();            osw.close();            InputStream is=conn.getInputStream();                        return is;           }        catch(Exception e)        {            e.printStackTrace();            return null;        }    }/**//*  *用W3C DOM对返回的XML进行解释  *  */    public static String getWeather(String city)    {        try        {            Document doc;            DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();            dbf.setNamespaceAware(true);            DocumentBuilder db=dbf.newDocumentBuilder();            InputStream is=getSoapInputStream(city);            doc=db.parse(is);//方法的名字getWeatherResult            NodeList nl=doc.getElementsByTagName("getWeatherResult");            Node n=nl.item(0);            String weather=n.getFirstChild().getNodeValue();            is.close();            return weather;        }        catch(Exception e)        {            e.printStackTrace();             return null;        }    }}写个main方法检验一下结果以下内容为程序代码:    public static void main(String[] args)throws Exception    {        System.out.println(WeatherReport.getWeather("珠海"));    }结果如下以下内容为程序代码:城市==珠海,日期==4.02-4.03,图1==http://weather.tq121.com.cn/images/a1.gif,图2==http://weather.tq121.com.cn/images/00.gif,天气==多云,温度==28℃~22℃,风==微风,紫外线==弱结果是有点乱,不过只要把它分割开来也是很容易的事。        在自己的应用程序中加上天气预报的功能,对程序的竞争力也是有好处的,而且实现也相当的简单,何乐而不为呢? Trackback:http://tb.blog.csdn.net/TrackBack.aspx?PostId=669923

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭