⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 soapserializationenvelopetest.java

📁 it is a tools for developing J2ME application using web service.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     *  <s:element name="GetStatusResponse">
     *    <s:complexType>
     *     <s:sequence>
     *       <s:element minOccurs="0" maxOccurs="1" name="GetStatusResult" type="s0:ReplyBase"/>
     *       <s:element minOccurs="0" maxOccurs="1" name="Status" type="s0:ServerStatus"/>
     *      </s:sequence>
     *    </s:complexType>
     *  </s:element>
     *<s:complexType name="ReplyBase">
     *   <s:attribute name="RcvTime" type="s:dateTime" use="required"/>
     *   <s:attribute name="ReplyTime" type="s:dateTime" use="required"/>
     *   <s:attribute name="ClientRequestHandle" type="s:string"/>
     *   <s:attribute name="RevisedLocaleID" type="s:string"/>
     *   <s:attribute name="ServerState" type="s0:serverState" use="required"/>
     *</s:complexType>
     *<s:simpleType name="serverState">
     *  <s:restriction base="s:string">
     *     <s:enumeration value="running"/>
     *     <s:enumeration value="failed"/>
     *     <s:enumeration value="noConfig"/>
     *     <s:enumeration value="suspended"/>
     *     <s:enumeration value="test"/>
     *    <s:enumeration value="commFault"/>
     *  </s:restriction>
     *</s:simpleType>
     * <s:complexType name="ServerStatus">
     *   <s:sequence>
     *     <s:element minOccurs="0" maxOccurs="1" name="StatusInfo" type="s:string"/>
     *     <s:element minOccurs="0" maxOccurs="1" name="VendorInfo" type="s:string"/>
     *     <s:element minOccurs="0" maxOccurs="unbounded" name="SupportedLocaleIDs" type="s:string"/>
     *     <s:element minOccurs="0" maxOccurs="unbounded" name="SupportedInterfaceVersions" type="s0:interfaceVersion"/>
     *   </s:sequence>
     *   <s:attribute name="StartTime" type="s:dateTime" use="required"/>
     *   <s:attribute name="ProductVersion" type="s:string"/>
     * </s:complexType>
     *  <s:simpleType name="interfaceVersion">
     *   <s:restriction base="s:string">
     *      <s:enumeration value="XML_DA_Version_1_0"/>
     *    </s:restriction>
     *  </s:simpleType>
     *  
     *  In other words, we call "getStatus" on the service, with "LocaleID" and "ClientRequestHandle" available
     *  as attributes.  The response  has two objects "ReplyBase" and "ServerStatus".  Each of these have a hodgepog
     *  of attributes, sequences and enumerations.
     *  
     *  The output message should look, more or less like this (from the specification):
     *  
     *  <soap:Body>
     *  <getStatus
     *     LocaleID="de-AT" xmlns="http://opcfoundation.org/webservices/XMLDA/1.0/"
     *  />
     *</soap:Body>
     *
     * and the response more or less like this (from the specification):
     * 
     * <soap:Body>
     *  <GetStatusResponse xmlns="http://opcfoundation.org/webservices/XMLDA/1.0/">
     *    <GetStatusResult
     *       RcvTime="2003-05-26T20:17:42.4781250-07:00"
     *       ReplyTime="2003-05-26T20:17:42.5781250-07:00"
     *       RevisedLocaleID="de"
     *       ServerState="running"
     *    />
     *    <Status
     *       StartTime="2003-05-26T20:16:45.0937500-07:00"
     *       ProductVersion="1.00.1.00"
     *    >
     *      <VendorInfo>OPC XML Data Access 1.00 Sample Server</VendorInfo>
     *      <SupportedLocaleIDs>en</SupportedLocaleIDs>
     *      <SupportedLocaleIDs>en-US</SupportedLocaleIDs>
     *      <SupportedLocaleIDs>de</SupportedLocaleIDs>
     *      <SupportedInterfaceVersions>XML_DA_Version_1_0</SupportedInterfaceVersions>
     *    </Status>
     *  </GetStatusResponse>
     *</soap:Body>
     */

    /** 
     * This will generate an XML string from a SoapObject/SoapEnvelope that represents the "getStatus"
     * call in the WSDL above.  The resulting XML will be passed to "public void testGetStatus(String xmlString)"
     * to ensure AXIS compatibility (and compatibility with the published standards).
     */
    public void testGetStatusSoapObject() throws Throwable {
        SoapObject getStatus = new SoapObject("http://opcfoundation.org/webservices/XMLDA/1.0/", "getStatus");
        getStatus.addAttribute("LocaleID", "de-AT");
        getStatus.addAttribute("ClientRequestHandle", "ClientHandle");
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.bodyOut = getStatus;
        envelope.setAddAdornments(false);

        byte[] request = myTransport.createRequestData(envelope);
        String xmlString = new String(request);
        assertGetStatus(xmlString);
    }

    /** The string that represents the "getStatus".  This is copied from an Axis call. */
    protected static final String getStatusRequest = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" + "<soapenv:Body><getStatus ClientRequestHandle=\"ClientHandle\" LocaleID=\"de-AT\" xmlns=\"http://opcfoundation.org/webservices/XMLDA/1.0/\"/></soapenv:Body>" + "</soapenv:Envelope>";

    /** Test the status using the AXIS generated xml. 
     * @throws Throwable */
    public void testGetStatus() throws Throwable {
        assertGetStatus(getStatusRequest);
    }

    /** 
     * Test getStatus by passing in an xmlString.  The result should be the same with an Axis or ksoap
     * generated string (clearly).
     * @param xmlString the xml string to test.
     * @throws Throwable 
     */
    public void assertGetStatus(String xmlString) throws Throwable {
        serviceCallCount = 0; // zero this
        Object service = new GetStatus();
        envelope.addMapping("http://opcfoundation.org/webservices/XMLDA/1.0/", "getStatus", SoapObject.class);
        envelope.setAddAdornments(false);
        ByteArrayInputStream bis = new ByteArrayInputStream(xmlString.getBytes());
        XmlPullParser parser = new KXmlParser();
        parser.setInput(bis, "UTF-8");
        parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);
        envelope.parse(parser);
        SoapObject soapReq = (SoapObject) envelope.bodyIn;
        assertEquals("ClientHandle", soapReq.getAttribute("ClientRequestHandle"));
        SoapObject result = null;
        result = MockTransport.invoke(service, soapReq);
        
        assertEquals("Service Called ", 1, serviceCallCount);
        //assert contents of result;
    }

    /** 
     * This will generate an XML string from a SoapObject/SoapEnvelope that represents the "GetStatusResponse"
     * call in the WSDL above.  The resulting XML will be passed to 
     * "public void testGetStatusResponse(String xmlString)"
     * to ensure AXIS compatibility (and compatibility with the published standards).
     */
    public void testGetStatusResponseSoapObject() throws Throwable {
        SoapObject getStatusResponse = new SoapObject("http://opcfoundation.org/webservices/XMLDA/1.0/", "GetStatusResponse");
        SoapObject getStatusResult = new SoapObject("http://opcfoundation.org/webservices/XMLDA/1.0/", "GetStatusResult");
        getStatusResult.addAttribute("RcvTime", "2003-05-26T20:17:42.4781250-07:00");
        getStatusResult.addAttribute("ReplyTime", "2003-05-26T20:17:42.5781250-07:00");
        getStatusResult.addAttribute("RevisedLocaleID", "de");
        getStatusResult.addAttribute("ServerState", "running");
        SoapObject status = new SoapObject("http://opcfoundation.org/webservices/XMLDA/1.0/", "Status");
        status.addAttribute("StartTime", "2003-05-26T20:16:45.0937500-07:00");
        status.addAttribute("ProductVersion", "1.00.1.00");
        status.addProperty("VendorInfo", "OPC XML Data Access 1.00 Sample Server");
        status.addProperty("SupportedLocaleIDs", "en");
        status.addProperty("SupportedLocaleIDs", "en-US");
        status.addProperty("SupportedLocaleIDs", "de");
        status.addProperty("SupportedInterfaceVersions", "XML_DA_Version_1_0");
        getStatusResponse.addProperty("GetStatusResult", getStatusResult);
        getStatusResponse.addProperty("Status", status);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.bodyOut = getStatusResponse;
        envelope.setImplicitTypes(true);
        envelope.setAddAdornments(false);
        byte[] request = null;
        request = myTransport.createRequestData(envelope);
        String xmlString = new String(request);
        assertGetStatusResponse(xmlString);
    }

    /** 
     * GetStatusResponse XML.  The body is from the OPC Foundation manual, the envelope
     * is from the AXIS envelope above. 
     */
    protected static final String getStatusResponse = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" + "  <soapenv:Body>" + "  <GetStatusResponse xmlns=\"http://opcfoundation.org/webservices/XMLDA/1.0/\">" + "    <GetStatusResult" + "       RcvTime=\"2003-05-26T20:17:42.4781250-07:00\"" + "       ReplyTime=\"2003-05-26T20:17:42.5781250-07:00\"" + "       RevisedLocaleID=\"de\"" + "       ServerState=\"running\"" + "    />" + "    <Status" + "       StartTime=\"2003-05-26T20:16:45.0937500-07:00\"" + "       ProductVersion=\"1.00.1.00\"" + "    >" + "      <VendorInfo>OPC XML Data Access 1.00 Sample Server</VendorInfo>" + "      <SupportedLocaleIDs>en</SupportedLocaleIDs>" + "      <SupportedLocaleIDs>en-US</SupportedLocaleIDs>" + "      <SupportedLocaleIDs>de</SupportedLocaleIDs>" + "      <SupportedInterfaceVersions>XML_DA_Version_1_0</SupportedInterfaceVersions>" + "    </Status>" + "  </GetStatusResponse>" + "</soapenv:Body>" + "</soapenv:Envelope>";

    /** 
     * Test the response from "getStatus".  The body is from the OPC Foundation manual, the envelope
     * is from the AXIS envelope above.  
     * @throws Throwable 
     */
    public void testGetStatusResponse() throws Throwable {
        assertGetStatusResponse(getStatusResponse);
    }

    /** 
     * Test the response from "getStatus".  
     * @throws Throwable 
     */
    public void assertGetStatusResponse(String xmlString) throws Throwable {
        ByteArrayInputStream is = new ByteArrayInputStream(xmlString.toString().getBytes());
        envelope.addMapping("http://opcfoundation.org/webservices/XMLDA/1.0/", "GetStatusResponse", SoapObject.class);
        envelope.addMapping("http://opcfoundation.org/webservices/XMLDA/1.0/", "Status", SoapObject.class);
        envelope.addMapping("http://opcfoundation.org/webservices/XMLDA/1.0/", "GetStatusResult", SoapObject.class);
        myTransport.parseResponse(envelope, is);
        is.close();
        SoapObject response = (SoapObject) envelope.bodyIn;
        assertEquals(" Two Parameter (GetStatusResponse)", 2, ((SoapObject) response).getPropertyCount());
        assertEquals(" No Attributes (GetStatusResponse)", 0, ((SoapObject) response).getAttributeCount());
        // first property is "GetStatusResult"
        SoapObject getStatusResult = (SoapObject) response.getProperty("GetStatusResult");
        assertNotNull(" GetStatusResult ", getStatusResult);
        assertEquals(" No Parameters (GetStatusResult)", 0, getStatusResult.getPropertyCount());
        assertEquals(" Four Attributes (GetStatusResult)", 4, getStatusResult.getAttributeCount());
        assertEquals("2003-05-26T20:17:42.4781250-07:00", getStatusResult.getAttribute("RcvTime"));
        assertEquals("2003-05-26T20:17:42.5781250-07:00", getStatusResult.getAttribute("ReplyTime"));
        assertEquals("running", getStatusResult.getAttribute("ServerState"));
        // first property is "Status"
        SoapObject status = (SoapObject) response.getProperty("Status");
        assertEquals(" Five Parameters (Status)", 5, status.getPropertyCount());
        assertEquals(" Two Attributes (Status)", 2, status.getAttributeCount());
        assertEquals("2003-05-26T20:16:45.0937500-07:00", status.getAttribute("StartTime"));
        assertEquals("1.00.1.00", status.getAttribute("ProductVersion"));
    }

    public static class GetStatus {
        public SoapObject getStatus(SoapObject in) {
            serviceCallCount++;
            assertEquals("Should be two attributes. ", 2, in.getAttributeCount());
            assertEquals("LocaleID ", "de-AT", in.getAttribute("LocaleID"));
            assertEquals("ClientRequestHandle ", "ClientHandle", in.getAttribute("ClientRequestHandle"));
            return null;
        }
    };

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -