Javascript 使用Angular的Soap服务上载附件
我正在使用soap服务,在soap服务中,我传递XML和文件附件。在SoapUI工具中,它的工作很好。但就我而言,我想通过Angular6实现目标。这里是我的Xml代码Javascript 使用Angular的Soap服务上载附件,javascript,angular,typescript,web-services,soap,Javascript,Angular,Typescript,Web Services,Soap,我正在使用soap服务,在soap服务中,我传递XML和文件附件。在SoapUI工具中,它的工作很好。但就我而言,我想通过Angular6实现目标。这里是我的Xml代码 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://service.wsvc.mhb.crimsonlogic.com/wsdl"> <soapenv:Header>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://service.wsvc.mhb.crimsonlogic.com/wsdl">
<soapenv:Header><wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsse:UsernameToken wsu:Id="UsernameToken-4C616D2C88CB4E2F9915586128832798"><wsse:Username>this.userName</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"> token.getPasswordDigest() </wsse:Password><wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"> token.getNonceBase64() </wsse:Nonce><wsu:Created> token.getCreated() </wsu:Created></wsse:UsernameToken></wsse:Security>
</soapenv:Header>
<soapenv:Body>
<wsdl:SubmitMessageRequest>
<wsdl:DocumentType> document </wsdl:DocumentType>
<wsdl:Subject>this.fileName</wsdl:Subject>
<wsdl:PayloadName>
<wsdl:href>cid: this.fileName</wsdl:href>
</wsdl:PayloadName>
<wsdl:AttachmentFile>
<wsdl:href>?</wsdl:href>
</wsdl:AttachmentFile>
</wsdl:SubmitMessageRequest>
</wsdl:MessageSubmission>
</soapenv:Body>
</soapenv:Envelope>
这是用户名
token.getPasswordDigest()token.getNonceBase64()token.getCreated()令牌
文件
此文件名为.fileName
cid:这个文件名
?
SOAP服务使用HTTP协议,因此这是可能的。为了与SOAP服务通信,可以使用angular模块。在SOAP请求主体中,需要将要上载的文件作为二进制数据
模板文件
<input
style="display: none"
type="file" (change)="onFileChanged($event)"
#fileInput>
<button (click)="fileInput.click()">Select File</button>
<button (click)="onUpload()">Upload!</button>
选择文件
上传!
组件文件
export class MyFileUploadComponent {
selectedFile: File
client: Client;
constructor(private soap: NgxSoapService) {
this.soap.createClient('assets/fileuploader.wsdl').subscribe(client => this.client = client);
}
onFileChanged(event) {
this.selectedFile = event.target.files[0]
}
onUpload() {
// upload code goes here
const body = {
file: this.selectedFile
};
(<any>this.client).Add(body).subscribe((res: ISoapMethodResponse) => this.message = res.result.AddResult);
}
}
导出类MyFileUploadComponent{
selectedFile:文件
客户:客户;
构造函数(私有soap:NgxSoapService){
this.soap.createClient('assets/fileuploader.wsdl').subscribe(client=>this.client=client);
}
onFileChanged(事件){
this.selectedFile=event.target.files[0]
}
onUpload(){
//上传代码在这里
常数体={
文件:this.selectedFile
};
(this.client).Add(body.subscribe)((res:ISoapMethodResponse)=>this.message=res.result.AddResult);
}
}
SOAP服务使用HTTP协议,因此这是可能的。为了与SOAP服务通信,可以使用angular模块。在SOAP请求主体中,需要将要上载的文件作为二进制数据
模板文件
<input
style="display: none"
type="file" (change)="onFileChanged($event)"
#fileInput>
<button (click)="fileInput.click()">Select File</button>
<button (click)="onUpload()">Upload!</button>
选择文件
上传!
组件文件
export class MyFileUploadComponent {
selectedFile: File
client: Client;
constructor(private soap: NgxSoapService) {
this.soap.createClient('assets/fileuploader.wsdl').subscribe(client => this.client = client);
}
onFileChanged(event) {
this.selectedFile = event.target.files[0]
}
onUpload() {
// upload code goes here
const body = {
file: this.selectedFile
};
(<any>this.client).Add(body).subscribe((res: ISoapMethodResponse) => this.message = res.result.AddResult);
}
}
导出类MyFileUploadComponent{
selectedFile:文件
客户:客户;
构造函数(私有soap:NgxSoapService){
this.soap.createClient('assets/fileuploader.wsdl').subscribe(client=>this.client=client);
}
onFileChanged(事件){
this.selectedFile=event.target.files[0]
}
onUpload(){
//上传代码在这里
常数体={
文件:this.selectedFile
};
(this.client).Add(body.subscribe)((res:ISoapMethodResponse)=>this.message=res.result.AddResult);
}
}
谢谢@Rambou,但在我的场景文件和XML正文中。然后请使用示例XML文件更新您的问题,以便我可以提供帮助。:)谢谢@Rambou,但在我的场景文件和XML正文中。然后请使用示例XML文件更新您的问题,以便我能提供帮助。:)