客户端:
String xmlString =// "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"  + 
        "<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>"
        +   "<LogoutRequest xmlns=\"http://www.MMarket.com/sims/schemas/\">"
        +   "    <Head>"
        +   "        <MsgType>中文</MsgType>"
        +"           <ActionCode>0</ActionCode>"
        +"           <TransactionID>1200908030000001</TransactionID>"
        + "          <Version>0001</Version>"
        +  "          <ProcessTime>20090803142702</ProcessTime>"
        +   "        <Send_Address>"
        +    "           <DeviceType>5</DeviceType>"
        +     "          <DeviceID>8889</DeviceID>"
        +      "     </Send_Address>"
        +       "    <Dest_Address>"
        +        "       <DeviceType>2</DeviceType>"
        +         "      <DeviceID>8888</DeviceID>"
        +  "         </Dest_Address>"
        +   "        <UserId>MobileMarket</UserId>"
        +    "       <CheckTag>0</CheckTag>"
        +     "      <ExpectLoadTime>20090803142702</ExpectLoadTime>"
        +      " </Head>"
        +"       <Body/>"
        + "  </LogoutRequest>"
        + "</soapenv:Body>"
        + "</soapenv:Envelope>";        MessageFactory mf = MessageFactory.newInstance();
                
        SOAPMessage smsg = mf.createMessage();
        
        MimeHeaders headers = smsg.getMimeHeaders();                headers.addHeader("Content-Type", "text/xml; charset=gb2312");
        
        smsg = mf.createMessage(headers, new ByteArrayInputStream(xmlString.getBytes()));        SOAPConnection conn = SOAPConnectionFactory.newInstance().createConnection();服务端:public void process(SOAPEnvelope req, SOAPEnvelope resp) throws javax.xml.soap.SOAPException 
    {
        String msg = req.getBody().toString();//这里得到的msg里中文字符就乱码了
}

解决方案 »

  1.   

    转换一下吧public String setCharSet(Document document, String charSet)
    throws Exception {
    OutputFormat format = OutputFormat.createPrettyPrint();
    // xml文件字符集为GBK
    format.setEncoding(charSet);
    ByteArrayOutputStream fos = new ByteArrayOutputStream();
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos,
    charSet));
    XMLWriter writer = new XMLWriter(bw, format);
    writer.write(document);
    bw.close();
    String restr = fos.toString();
    fos.close();
    return restr;
    }