使用angular 2创建SOAP客户端

时间:2016-10-06 08:04:37

标签: soap angular typescript ionic-framework soap-client

我正在寻找一种使用WSDL将SOAP请求发送到Web服务的方法。使用Typescript 2和Angular 2可以做到这一点吗?

我已经看过Angular 1的教程,但他们使用旧的角度方法,如factorycontroller

我想如果可能的话,用TypeScript做一个新方法。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您需要的是一个包裹Http并提供反序列化的服务:

@Injectable()
export class SOAPService{

    constructor(private http:Http){}

    public get(url:string, options?:RequestOptionsArgs):Observable<any>{
        return this.http.get(url, options).map(res => {
            let xmlresult = res.text();
            let result = //Here you deserialize your xml object
            return result;
        }
    }
}

然后你可以这样使用它:

@Component({...})
export class ExampleComponent{
    constructor(private soap:SOAPService){}


    foo():{
        this.soap.get('foo/bar').subscribe(...);
    }
}

由于我不是xml解析专家,我不能告诉你如何反序列化你的XML,但你可以检查MDN,你只需要将序列化/反序列化过程包装在另一个服务中并将其注入SOAPService

答案 1 :(得分:1)

你可以使用Angular2的[Http class](https://angular.io/docs/ts/latest/api/http/index/Http-class.html)的常规http请求 这是他们页面的一个例子:

import {Http, HTTP_PROVIDERS} from '@angular/http';
import 'rxjs/add/operator/map'
@Component({
  selector: 'http-app',
  viewProviders: [HTTP_PROVIDERS],
  templateUrl: 'people.html'
})
class PeopleComponent {
  constructor(http: Http) {
    http.get('people.json')
      // Call map on the response observable to get the parsed people object
      .map(res => res.json())
      // Subscribe to the observable to get the parsed people object and attach it to the
      // component
      .subscribe(people => this.people = people);
  }
}

而不是要求提供json文件,而是可以使用URL。