首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用SoapMessage创建和发送apache?

如何使用SoapMessage创建和发送apache?
EN

Stack Overflow用户
提问于 2015-05-05 08:01:22
回答 3查看 3.6K关注 0票数 2

我正在使用IntellijIDEA,我有一个测试SOAP的项目。我有用于发送的xml和msg文件。如何将此文件转换为cxf消息和cxf SoapMessage以进行发送?这是我的方法,它返回SoapMessage:

代码语言:javascript
运行
复制
public SoapMessage getMessage(File file) throws Exception{
 Message msg;
 msg.setContent(File.class, file);
 SoapMessage message = new SoapMessage(msg);
 return message;
}

但是,如果我尝试调用这个方法,我会看到以下内容:

java.lang.NullPointerException

我试着发送这个消息:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
schemaLocation="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
    <Test>
      <msg>Test</msg>
    </Test>
</soapenv:Body>
</soapenv:Envelope>

UPD:什么需要初始化?

代码语言:javascript
运行
复制
Message msg = new Message(){...}?

它用于将我的*.msg文件转换为SoapMessage并发送到SOAP中。

EN

回答 3

Stack Overflow用户

发布于 2015-05-05 09:53:21

测试基于SOAP的web服务的两种方法

  1. 使用SOAP UI客户端--这很容易
  2. 我们可以使用Maven插件生成java代码,并从main类开始使用服务。
  3. 使用Java的wsimport命令 wsimport -keep http://localhost:9090/ws/hello?wsdl URL = new (“http://localhost:9090/ws/hello?wsdl"”);//1参数服务URI,参考//2参数上的wsdl文档是服务名称,引用QName qname上的wsdl文档=新QName("http://ws.service.com/","HelloWorldImplService");服务服务= Service.create( url,qname);HelloWorld hellObj = service.getPort(HelloWorld.class);

使用obj调用适当的方法。

我们不需要手动构造SOAP消息。

票数 0
EN

Stack Overflow用户

发布于 2018-06-05 16:00:34

我需要做一些类似的事情,以下是我所做的:

代码语言:javascript
运行
复制
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;

import java.util.List;

import org.apache.cxf.binding.soap.Soap12;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.headers.Header;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

@RunWith(BlockJUnit4ClassRunner.class)
public class SOAPMessageTest {

    @Test
    public void emptyHeaderTest() {
        SoapMessage soapMessage = new SoapMessage(Soap12.getInstance());

        List<Header> headers = soapMessage.getHeaders();
        assertThat(headers.size(), is(0));
    }
}

根据需要调整此代码以向soapMessage对象添加内容。

票数 0
EN

Stack Overflow用户

发布于 2019-02-13 07:46:12

你试过像这样实例化一个soapMessage吗?

代码语言:javascript
运行
复制
Reader reader = new StringReader(body);
    XMLStreamReader xmlReader = null;
    XMLInputFactory factory = XMLInputFactory.newInstance(); // Or newFactory()
    try {
      xmlReader = factory.createXMLStreamReader(reader);
    } catch (XMLStreamException e) {
      e.printStackTrace();
    }

    SoapMessage soapMessage = new SoapMessage(Soap11.getInstance());
    soapMessage.setContent(XMLStreamReader.class, xmlReader);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30047302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档