2014-04-21 59 views
0

我使用Web服務客戶端在Java調用SOAP Web服務,我已經添加如下代碼如下,但我得到在<span class="skimlinks-unlinked">未解決的編譯問題

地方錯誤,請幫助我這個..

我們必須使用任何jar文件,這個

import java.io.ByteArrayOutputStream; 
import java.io.IOException; 

import javax.xml.namespace.QName; 
import javax.xml.soap.MessageFactory; 
import javax.xml.soap.SOAPBody; 
import javax.xml.soap.SOAPBodyElement; 
import javax.xml.soap.SOAPConnection; 
import javax.xml.soap.SOAPConnectionFactory; 
import javax.xml.soap.SOAPElement; 
import javax.xml.soap.SOAPEnvelope; 
import javax.xml.soap.SOAPException; 
import javax.xml.soap.SOAPHeader; 
import javax.xml.soap.SOAPMessage; 

public class SOAPClient { 

    private static final String endpoint = "http://localhost/SOAPService/MySoapService"; 

    public static void main(String[] args) throws SOAPException { 
     SOAPMessage message = MessageFactory.newInstance().createMessage(); 
     SOAPHeader header = message.getSOAPHeader(); 
     header.detachNode(); 

     SOAPEnvelope envelope = message.getSOAPPart().getEnvelope(); 
     envelope.setAttribute("namespace","namespaceUrl"); 

     SOAPBody body = message.getSOAPBody(); 
     QName bodyName = new QName("getResponse"); 
     SOAPBodyElement bodyElement = body.addBodyElement(bodyName); 
     SOAPElement symbol = bodyElement.addChildElement("name"); 
     symbol.addTextNode("Harry Joy"); 

     SOAPConnection connection = SOAPConnectionFactory.newInstance().createConnection(); 
     SOAPMessage response = <span class="skimlinks-unlinked">connection.call(message</span>, endpoint); 
     <span class="skimlinks-unlinked">connection.close</span>(); 

     SOAPBody responseBody = response.getSOAPBody(); 
     SOAPBodyElement responseElement = (SOAPBodyElement)responseBody.getChildElements().next(); 
     SOAPElement returnElement = (SOAPElement)responseElement.getChildElements().next(); 
     if(responseBody.getFault()!=null){ 
      <span class="skimlinks-unlinked">System.out.println(returnElement.getValue</span>()+" "+responseBody.getFault().getFaultString()); 
     } else { 
      <span class="skimlinks-unlinked">System.out.println(returnElement.getValue</span>()); 
     } 

     try { 
      <span class="skimlinks-unlinked">System.out.println(getXmlFromSOAPMessage(message</span>)); 
      <span class="skimlinks-unlinked">System.out.println(getXmlFromSOAPMessage(response</span>)); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 

    private static String getXmlFromSOAPMessage(SOAPMessage msg) 
      throws SOAPException, IOException { 
     ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream(); 
     msg.writeTo(byteArrayOS); 
     return new String(byteArrayOS.toByteArray()); 
    } 

} 
+0

刪除XML標記。 – Shriram

+3

''不是Java代碼。你爲什麼把它放在那裏? – immibis

+0

這個問題似乎是無關緊要的,因爲它沒有顯示對所解決問題的最小理解。 –

回答

0

你不能把XML標籤的Java文件,你必須將其刪除,但它們不是Java語言。

我爲您刪除,試試這個:

import java.io.ByteArrayOutputStream; 
import java.io.IOException; 

import javax.xml.namespace.QName; 
import javax.xml.soap.MessageFactory; 
import javax.xml.soap.SOAPBody; 
import javax.xml.soap.SOAPBodyElement; 
import javax.xml.soap.SOAPConnection; 
import javax.xml.soap.SOAPConnectionFactory; 
import javax.xml.soap.SOAPElement; 
import javax.xml.soap.SOAPEnvelope; 
import javax.xml.soap.SOAPException; 
import javax.xml.soap.SOAPHeader; 
import javax.xml.soap.SOAPMessage; 

public class SOAPClient { 

    private static final String endpoint = "http://localhost/SOAPService/MySoapService"; 

    public static void main(String[] args) throws SOAPException { 
     SOAPMessage message = MessageFactory.newInstance().createMessage(); 
     SOAPHeader header = message.getSOAPHeader(); 
     header.detachNode(); 

     SOAPEnvelope envelope = message.getSOAPPart().getEnvelope(); 
     envelope.setAttribute("namespace","namespaceUrl"); 

     SOAPBody body = message.getSOAPBody(); 
     QName bodyName = new QName("getResponse"); 
     SOAPBodyElement bodyElement = body.addBodyElement(bodyName); 
     SOAPElement symbol = bodyElement.addChildElement("name"); 
     symbol.addTextNode("Harry Joy"); 

     SOAPConnection connection = SOAPConnectionFactory.newInstance().createConnection(); 
     SOAPMessage response = connection.call(message, endpoint); 
     connection.close 

     SOAPBody responseBody = response.getSOAPBody(); 
     SOAPBodyElement responseElement = (SOAPBodyElement)responseBody.getChildElements().next(); 
     SOAPElement returnElement = (SOAPElement)responseElement.getChildElements().next(); 
     if(responseBody.getFault()!=null){ 
      System.out.println(returnElement.getValue()+" "+responseBody.getFault().getFaultString()); 
     } else { 
      System.out.println(returnElement.getValue()); 
     } 

     try { 
      System.out.println(getXmlFromSOAPMessage(message)); 
      System.out.println(getXmlFromSOAPMessage(response)); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 

    private static String getXmlFromSOAPMessage(SOAPMessage msg) 
      throws SOAPException, IOException { 
     ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream(); 
     msg.writeTo(byteArrayOS); 
     return new String(byteArrayOS.toByteArray()); 
    } 

} 
+0

我得到像這樣的異常com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:Invalid Content-Type:text/html。這是一個錯誤消息,而不是SOAP響應? –

相關問題