Pourquoi reçois-je des java.lang.NullPointerException plutôt que de la réponse soap?

Je suis l'envoi de la requête vers le serveur, quand je copie de la demande et de l'utilisation de la SOAPUI il montre la bonne réponse,

mais lorsque j'utilise le code suivant pour générer et envoyer, renvoie

java.lang.NullPointerException

sur la ligne 50, qui est

sm.writeTo(out);

code:

SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection connection = soapConnectionFactory.createConnection();
SOAPFactory soapFactory = SOAPFactory.newInstance();
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage message = factory.createMessage();
SOAPHeader header = message.getSOAPHeader();
SOAPPart soapPart = message.getSOAPPart();
SOAPEnvelope soapEnvelope = soapPart.getEnvelope();        
SOAPBody body = soapEnvelope.getBody();
header.removeNamespaceDeclaration(header.getPrefix());

soapEnvelope.addNamespaceDeclaration("v9", "ADDRESS OF SERVICE");

Name bodyName;
bodyName = soapFactory.createName("User");

SOAPElement getList = body.addChildElement("User", "v9");

Name childName;

getList.addChildElement("name", "v9").addTextNode("Alex");
getList.addChildElement("surname", "v9").addTextNode("Nicroid");   

message.writeTo(System.out); 

URL endpoint = new URL("ENDPOINT ADDRESS OF SERVER");
SOAPMessage response = connection.call(message, endpoint);

connection.close();

SOAPMessage sm = response;

ByteArrayOutputStream out = new ByteArrayOutputStream();

sm.writeTo(out); //java.lang.NullPointerException

System.out.println(out.toString());

Maven

 <url>http://maven.apache.org</url>
  <build>
    <resources>
      <resource>
        <targetPath>META-INF</targetPath>
        <directory>src</directory>
        <includes>
          <include>jax-ws-catalog.xml</include>
          <include>wsdl/**</include>
        </includes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <groupId>org.jvnet.jax-ws-commons</groupId>
        <artifactId>jaxws-maven-plugin</artifactId>
        <version>2.2.1</version>
        <dependencies>
          <dependency>
            <groupId>javax.xml</groupId>
            <artifactId>webservices-api</artifactId>
            <version>1.4</version>
          </dependency>
        </dependencies>
        <configuration>
          <sourceDestDir>${project.build.directory}/generated-sources/jaxws-wsimport</sourceDestDir>
          <xnocompile>true</xnocompile>
          <verbose>true</verbose>
          <extension>true</extension>
          <catalog>${basedir}/src/jax-ws-catalog.xml</catalog>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jdom</groupId>
      <artifactId>jdom</artifactId>
      <version>1.1</version>
      <type>jar</type>
    </dependency>
    <dependency>
      <groupId>com.sun.xml.ws</groupId>
      <artifactId>webservices-rt</artifactId>
      <version>1.4</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
</project>
Pourriez-vous nous fournir l'ensemble de la stacktrace? Parce que c'est assez similaire à l'exemple de la SAAJ à partir de Oracle du site, et il a besoin d'fournisseur réel (saaj-impl.jar ou alternatives, telles que AXE)
La méthode de connexion.appel le plus probablement renvoie la valeur null au lieu de la réponse. Veuillez pusblish votre stacktrace.
J'ai utilisé le même code pour un autre webservice et travaillé. Pas sûr pourquoi elle se montre cette erreur. Il montre juste "de java.lang.NullPointerException"
Essayez sm.writeTo(System.out)si cela fonctionne. Peut-être que votre OutputStream objet out est null.
Sur la ligne 50, il y a deux objets qui peuvent être null: sm et out. Depuis sm.writeTo(System.out); obtient la même erreur, sm est null. sm est égal à response, ce qui équivaut à connection.call(message, endpoint);. .call() renvoie "la SOAPMessage objet qui est la réponse à un message qui a été envoyé". Par conséquent, vous ne recevez pas de réponse de votre serveur.

OriginalL'auteur | 2013-11-13