0%

import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.xml.parsers.DocumentBuilder;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.xml.parsers.DocumentBuilderFactory;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.xml.parsers.ParserConfigurationException;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.IOException;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.StringReader;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.StringWriter;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.Writer;

</span><span style="color: #008000;">/**</span><span style="color: #008000;">
 * Created by IntelliJ IDEA.
 * User: tsaowe
 * Date: 11-9-1
 * Time: 上午9:13
 </span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> XmlFormatter {
    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> String format(String unformattedXml) {
        </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
            </span><span style="color: #0000ff;">final</span> Document document =<span style="color: #000000;"> parseXmlFile(unformattedXml);
            OutputFormat format </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> OutputFormat(document);
            format.setLineWidth(</span>65<span style="color: #000000;">);
            format.setIndenting(</span><span style="color: #0000ff;">true</span><span style="color: #000000;">);
            format.setIndent(</span>2<span style="color: #000000;">);
            Writer out </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> StringWriter();
            XMLSerializer serializer </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> XMLSerializer(out, format);
            serializer.serialize(document);
            </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> out.toString();
        } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (IOException e) {
            </span><span style="color: #0000ff;">throw</span> <span style="color: #0000ff;">new</span><span style="color: #000000;"> RuntimeException(e);
        }
    }

    </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> Document parseXmlFile(String in) {
        </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
            DocumentBuilderFactory dbf </span>=<span style="color: #000000;"> DocumentBuilderFactory.newInstance();
            DocumentBuilder db </span>=<span style="color: #000000;"> dbf.newDocumentBuilder();
            InputSource is </span>= <span style="color: #0000ff;">new</span> InputSource(<span style="color: #0000ff;">new</span><span style="color: #000000;"> StringReader(in));
            </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> db.parse(is);
        } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (ParserConfigurationException e) {
            </span><span style="color: #0000ff;">throw</span> <span style="color: #0000ff;">new</span><span style="color: #000000;"> RuntimeException(e);
        } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (SAXException e) {
            </span><span style="color: #0000ff;">throw</span> <span style="color: #0000ff;">new</span><span style="color: #000000;"> RuntimeException(e);
        } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (IOException e) {
            </span><span style="color: #0000ff;">throw</span> <span style="color: #0000ff;">new</span><span style="color: #000000;"> RuntimeException(e);
        }
    }

    </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> main(String[] args) <span style="color: #0000ff;">throws</span><span style="color: #000000;"> Exception{
        String s </span>= "<?xml version="1.0" encoding="UTF-8"?><PARAM><DBID>35</DBID><SEQUENCE>atgtca</SEQUENCE><MAXNS>10</MAXNS><MINIDENTITIES>90</MINIDENTITIES><MAXEVALUE>10</MAXEVALUE><USERNAME>admin</USERNAME><PASSWORD>111111</PASSWORD><TYPE>P</TYPE><RETURN_TYPE>2</RETURN_TYPE></PARAM>";<span style="color: #008000;">//</span><span style="color: #008000;">未格式化前的xml</span>
        System.out.println(<span style="color: #0000ff;">new</span><span style="color: #000000;"> XmlFormatter().format(s));

    }
}</span>

使用axis调用.net带soapheader的webservice是如何实现的,现在贴出代码

![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
<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/">
  <soap:Header>
  <AuthHeaderCS xmlns="http://tempuri.org/">
      <Username>string</Username>
      <Password>string</Password>
    </AuthHeaderCS>
  </soap:Header>
  <soap:Body>
    <StarTrans xmlns="http://tempuri.org/" />
  </soap:Body>
</soap:Envelope>

1、客户单编程方式(和第一种方式一样)

![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)

//文件名:HelloService.java

<span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.jws.WebMethod;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.jws.WebParam;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.jws.WebResult;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.jws.WebService;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.xml.bind.annotation.XmlSeeAlso;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.xml.ws.RequestWrapper;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.xml.ws.ResponseWrapper;

</span><span style="color: #008000;">/**</span><span style="color: #008000;">
 * This class was generated by the JAX-WS RI.
 * JAX-WS RI 2.1.6 in JDK 6
 * Generated source version: 2.1
 * 
 </span><span style="color: #008000;">*/</span><span style="color: #000000;">
@WebService(name </span>= "HelloService", targetNamespace = "http://ws.itcast.cn/"<span style="color: #000000;">)
@XmlSeeAlso({

})
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">interface</span><span style="color: #000000;"> HelloService {

    </span><span style="color: #008000;">/**</span><span style="color: #008000;">
     * 
     * </span><span style="color: #808080;">@param</span><span style="color: #008000;"> arg0
     * </span><span style="color: #808080;">@return</span><span style="color: #008000;">
     *     returns java.lang.String
     </span><span style="color: #008000;">*/</span><span style="color: #000000;">
    @WebMethod
    @WebResult(targetNamespace </span>= ""<span style="color: #000000;">)
    @RequestWrapper(localName </span>= "sayHello", targetNamespace = "http://ws.itcast.cn/", className = "cn.itcast.ws.client.SayHello"<span style="color: #000000;">)
    @ResponseWrapper(localName </span>= "sayHelloResponse", targetNamespace = "http://ws.itcast.cn/", className = "cn.itcast.ws.client.SayHelloResponse"<span style="color: #000000;">)
    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> String sayHello(
        @WebParam(name </span>= "arg0", targetNamespace = ""<span style="color: #000000;">)
        String arg0);

}</span>

package model;

</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.lang.reflect.Field;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.lang.reflect.Method;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.ArrayList;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.List;

</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> ListToModel {
    </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> main(String[] args) {
        List</span><Object> userList = <span style="color: #0000ff;">new</span> ArrayList<Object><span style="color: #000000;">();
        userList.add(</span>"ooP"<span style="color: #000000;">);
        userList.add(</span>"男"<span style="color: #000000;">);
        userList.add(</span>18<span style="color: #000000;">);
        User user </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> User();
        </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
            listToModel(userList, user);
        } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception e) {
            e.printStackTrace();
        }
        System.out.println(user.getName() </span>+ "; " + user.getGender() + "; " +<span style="color: #000000;"> user.getAge());

    }

    </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <T> <span style="color: #0000ff;">void</span> listToModel(List<Object> list, T t) <span style="color: #0000ff;">throws</span><span style="color: #000000;"> Exception {
        Field[] fields </span>=<span style="color: #000000;"> t.getClass().getDeclaredFields();
        </span><span style="color: #0000ff;">if</span> (list.size() !=<span style="color: #000000;"> fields.length) {
            </span><span style="color: #0000ff;">return</span><span style="color: #000000;">;
        }
        </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> k = 0, len = fields.length; k < len; k++<span style="color: #000000;">) {
            </span><span style="color: #008000;">//</span><span style="color: #008000;"> 根据属性名称,找寻合适的set方法</span>
            String fieldName =<span style="color: #000000;"> fields[k].getName();
            String setMethodName </span>= "set" + fieldName.substring(0, 1<span style="color: #000000;">).toUpperCase()
                    </span>+ fieldName.substring(1<span style="color: #000000;">);
            Method method </span>= <span style="color: #0000ff;">null</span><span style="color: #000000;">;
            Class</span><?> clazz =<span style="color: #000000;"> t.getClass();
            </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
                method </span>= clazz.getMethod(setMethodName, <span style="color: #0000ff;">new</span><span style="color: #000000;"> Class[] { list.get(k).getClass() });
            } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (SecurityException e1) {
                e1.printStackTrace();
                </span><span style="color: #0000ff;">return</span><span style="color: #000000;">;
            } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (NoSuchMethodException e1) {
                String newMethodName </span>= "set" + fieldName.substring(0, 1<span style="color: #000000;">).toLowerCase()
                        </span>+ fieldName.substring(1<span style="color: #000000;">);
                </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
                    method </span>= clazz.getMethod(newMethodName, <span style="color: #0000ff;">new</span><span style="color: #000000;"> Class[] { list.get(k).getClass() });
                } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (SecurityException e) {
                    e.printStackTrace();
                    </span><span style="color: #0000ff;">return</span><span style="color: #000000;">;
                } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (NoSuchMethodException e) {
                    e.printStackTrace();
                    </span><span style="color: #0000ff;">return</span><span style="color: #000000;">;
                }
            }
            </span><span style="color: #0000ff;">if</span> (method == <span style="color: #0000ff;">null</span><span style="color: #000000;">) {
                </span><span style="color: #0000ff;">return</span><span style="color: #000000;">;
            }
            method.invoke(t, </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Object[] { list.get(k) });
        }
    }

}</span>