+-

我正在尝试将带有axis1.4客户端的文件发送到jaxws服务.我的客户代码如下.
System.out.println(service.getCalcImplPort().getFile(new DataHandler(new DataSource() {
@Override
public OutputStream getOutputStream() throws IOException {
// TODO Auto-generated method stub
return null;
}
@Override
public String getName() {
// TODO Auto-generated method stub
return "abc.txt";
}
@Override
public InputStream getInputStream() throws IOException {
InputStream bs = new ByteArrayInputStream("Hello world".getBytes());
return bs;
}
@Override
public String getContentType() {
// TODO Auto-generated method stub
return "application/soap+xml";
}
})));
当我从tcpmon看时,看到以下消息生成.
------=_Part_0_1601756168.1386618236799
内容类型:text / xml;字符集= UTF-8
内容传输编码:二进制
内容编号:
—— = _ Part_0_1601756168.1386618236799
内容类型:应用程序/肥皂xml
内容传输编码:二进制
内容编号:
你好,世界
—— = _ Part_0_1601756168.1386618236799–
XML部分是
<?xml version="1.0" encoding="UTF-8"?><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><getFile xmlns="http://ws.kasim.com/"><arg0 href="cid:5C354342D8307DD2EC87841AD94BCCB0" xsi:type="xsd:base64Binary" xmlns=""/></getFile></soapenv:Body></soapenv:Envelope>
当我在服务器端检查时,我看到服务的DataHandler参数没有发送数据.首先,这是有效的mtom消息吗?如果没有,谁能告诉我这里缺少什么?
谢谢.
最佳答案
经过长时间的互联网搜索,我找到了解决方案.问题是我没有在客户端存根文件中设置mtom属性.在我添加下面的代码后,它开始工作.我没有删除问题,可能是其他人需要它.
call.setProperty(Call.ATTACHMENT_ENCAPSULATION_FORMAT, Call.ATTACHMENT_ENCAPSULATION_FORMAT_MTOM);
点击查看更多相关文章
转载注明原文:java-axis1.4客户端使用Mtom发送文件 - 乐贴网