zoukankan      html  css  js  c++  java
  • Java调用天气Webservice的小应用

    废话不多说,直接贴代码:

    CityReq.java

    package com.weather;
    
    import javax.xml.bind.annotation.XmlElement;
    import javax.xml.bind.annotation.XmlRootElement;
    
    @XmlRootElement(name="getWeatherbyCityName",namespace="http://WebXml.com.cn/")
    public class CityReq {
    
        private String theCityName;
    
        public String getTheCityName() {
            return theCityName;
        }
    
        @XmlElement(name="theCityName",namespace="http://WebXml.com.cn/")
        public void setTheCityName(String theCityName) {
            this.theCityName = theCityName;
        }
    
        
    }

    WeatherWebServiceTest.java

    package com.weather;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    import javax.xml.bind.JAXBContext;
    import javax.xml.bind.Marshaller;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.soap.MessageFactory;
    import javax.xml.soap.SOAPBody;
    import javax.xml.soap.SOAPConstants;
    import javax.xml.soap.SOAPEnvelope;
    import javax.xml.soap.SOAPMessage;
    
    import org.w3c.dom.Document;
    public class WeatherWebServiceTest {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            weather();
        }
        static void weather(){
            System.out.println("开始登陆...");
            String wsdl="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl";
            System.out.println("wsdl:"+wsdl);
            HttpURLConnection urlconn=null;
            InputStream ins=null;
            OutputStream ous=null;
            try {
                URL u=new URL(wsdl);
                urlconn=(HttpURLConnection)u.openConnection();
                urlconn.setDoOutput(true);
                urlconn.setRequestMethod("POST");
                urlconn.setRequestProperty("Content-Type", "application/soap+xml; charset=utf-8");
                //urlconn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
                
                //发送数据
                ous=urlconn.getOutputStream();
                
                
                Document document=DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
                //编组
                Marshaller marsh=JAXBContext.newInstance(CityReq.class).createMarshaller();
                CityReq xmlf=new CityReq();
                xmlf.setTheCityName("北京");
                //JAXB.marshal(xmlf, new PrintWriter(System.out));
                marsh.marshal(xmlf, document);
                //创建soapmessage对象
                SOAPMessage soapMessage=MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL).createMessage();
                SOAPBody soapBody=soapMessage.getSOAPBody();
                soapBody.addDocument(document);
                SOAPEnvelope soapEnvelope = soapMessage.getSOAPPart().getEnvelope();
                soapEnvelope.removeNamespaceDeclaration("env");
                soapEnvelope.addNamespaceDeclaration("soap12", "http://www.w3.org/2003/05/soap-envelope");
                soapEnvelope.addNamespaceDeclaration("xsi", "http://www.w3.org/2001/XMLSchema-instance");
                soapEnvelope.addNamespaceDeclaration("xsd", "http://www.w3.org/2001/XMLSchema");
                soapEnvelope.setPrefix("soap12");
                soapEnvelope.removeChild(soapEnvelope.getHeader());
                soapBody.setPrefix("soap12");
                //发送数据
               soapMessage.writeTo(ous);
               // soapMessage.writeTo(System.out);
                System.out.println(urlconn.getResponseCode());
                System.out.println(urlconn.getResponseMessage());
                //接收数据
                ins=urlconn.getInputStream();
                //接收的数据需要解组?
               StringBuffer respMsg=new StringBuffer();
                byte[] bytes=new byte[1024*1024];
                int a=-1;
                while ((a=ins.read(bytes))!=-1) {
                    respMsg.append(new String(bytes,0,a));
                }
                System.out.println(respMsg.length());
                System.out.println(respMsg);
                
                //解组的方式
              /* SOAPMessage responseMessage=MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL).createMessage(null, ins);
                Unmarshaller unmarsh=JAXBContext.newInstance(CityResp.class).createUnmarshaller();
                JAXBElement<CityResp> reponse= unmarsh.unmarshal(responseMessage.getSOAPBody().extractContentAsDocument(), CityResp.class);
                CityResp uresp= reponse.getValue();
                System.out.println(uresp.getResult());*/
                
                ous.close();
                ins.close();
                urlconn.disconnect();
            } catch (Exception e) {
                e.printStackTrace();
            }finally{
                
            }
        }
        
         
    }
  • 相关阅读:
    VPS服务器 基本配置
    WCF 系列 → HelloWord
    ASP.NET MVC3 常用整理
    ASP.NET MVC3 过滤器 Filter
    NVelocity系列 → NVelocity配置详解
    网站安全检测 Web 安全测试工具
    ASP.NET MVC3.0 静态化实现
    CSS3的动画泡沫按钮
    SQL 大数据优化
    用友备份失败,超时己过期
  • 原文地址:https://www.cnblogs.com/xiaoymin/p/4534708.html
Copyright © 2011-2022 走看看