“缺少内容类型”;开始=";Java SOAP客户端中的标记,服务器未找到附件
我正在为接受附件的SOAP服务创建一个Java客户端。我使用的是java.xml.soap类,我以前使用过这些类,但没有使用附件。服务器声称不包括我的附件 我使用SoapUI和wireshark将我的SOAP消息与工作的SOAP消息进行比较。一个很大的区别是我的标题不包含“start=” 工作内容类型如下所示: 内容类型:多部分/相关;type=“text/xml”;start=“”;boundary=“---=\u Part\u 23\u 6341950.1286312374228” 我从Java代码中获得的内容类型如下: 内容类型:多部分/相关;type=“text/xml”;boundary=“---=\u Part\u 23\u 6341950.1286312374228” No start=即使在根元素上设置了内容ID。工作和失败的SOAP消息在其他方面几乎相同。如何生成开始标记,或者服务器可能看不到附件的其他原因是什么 谢谢“缺少内容类型”;开始=";Java SOAP客户端中的标记,服务器未找到附件,java,soap,attachment,Java,Soap,Attachment,我正在为接受附件的SOAP服务创建一个Java客户端。我使用的是java.xml.soap类,我以前使用过这些类,但没有使用附件。服务器声称不包括我的附件 我使用SoapUI和wireshark将我的SOAP消息与工作的SOAP消息进行比较。一个很大的区别是我的标题不包含“start=” 工作内容类型如下所示: 内容类型:多部分/相关;type=“text/xml”;start=“”;boundary=“---=\u Part\u 23\u 6341950.1286312374228” 我从Ja
SOAPMessage soapMessage =
MessageFactory.newInstance().createMessage();
SOAPPart soapPart = soapMessage.getSOAPPart();
SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
SOAPBody body = soapEnvelope.getBody();
SOAPHeader header = soapMessage.getSOAPHeader();
soapPart.setContentId("<rootpart@here.com>");
MimeHeaders mimeHeaders = soapMessage.getMimeHeaders();
mimeHeaders.addHeader("SOAPAction", "addDocument");
mimeHeaders.addHeader("Accept-Encoding", "gzip,deflate");
Name bodyName = soapEnvelope.createName("Document", "doc",
"http://ns/Document");
SOAPBodyElement document = body.addBodyElement(bodyName);
Name filenameName = soapEnvelope.createName("Filename", "doc",
"http://ns/Document");
SOAPElement filename = document.addChildElement(filenameName);
filename.setValue("filename.txt");
AttachmentPart attachment = soapMessage.createAttachmentPart();
attachment.setContent("Some text", "application/octet-stream");
attachment.setMimeHeader("Content-Transfer-Encoding", "binary");
soapMessage.addAttachmentPart(attachment);
SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance();
SOAPConnection soapConnection = scf.createConnection();
URL url = new URL("http://host/Service");
SOAPMessage reply = soapConnection.call(soapMessage, url);
SOAPMessage SOAPMessage=
MessageFactory.newInstance().createMessage();
SOAPPart SOAPPart=soapMessage.getSOAPPart();
SOAPEnvelope SOAPEnvelope=soapPart.getEnvelope();
SOAPBody=soapEnvelope.getBody();
SOAPHeader=soapMessage.getSOAPHeader();
soapPart.setContentId(“”);
MimeHeaders-MimeHeaders=soapMessage.getMimeHeaders();
addHeader(“SOAPAction”、“addDocument”);
addHeader(“接受编码”、“gzip、deflate”);
Name bodyName=soapEnvelope.createName(“文档”、“文档”,
"http://ns/Document");
SOAPBodyElement文档=body.addBodyElement(bodyName);
Name filenameName=soapEnvelope.createName(“文件名”、“文档”,
"http://ns/Document");
SOAPElement文件名=document.addChildElement(filenameName);
filename.setValue(“filename.txt”);
AttachmentPart attachment=soapMessage.createAttachmentPart();
附件.setContent(“一些文本”、“应用程序/八位字节流”);
附件.setMimeHeader(“内容传输编码”、“二进制”);
soapMessage.addAttachmentPart(附件);
SOAPConnectionFactory scf=SOAPConnectionFactory.newInstance();
SOAPConnection SOAPConnection=scf.createConnection();
URL=新URL(“http://host/Service");
SOAPMessage reply=soapConnection.call(SOAPMessage,url);
这对我很有用:
soapMessage.getMimeHeaders().setHeader("Content-Type",
soapMessage.getMimeHeaders().getHeader("Content-Type")[0]+
"; start=\"<rootpart@here.com>\"");
soapMessage.getMimeHeaders().setHeader(“内容类型”,
soapMessage.getMimeHeaders().getHeader(“内容类型”)[0]+
“开始=\”\”);