我正在寻找一种使用WSDL将SOAP请求发送到Web服务的方法。使用Typescript 2和Angular 2可以做到这一点吗?
我已经看过Angular 1的教程,但他们使用旧的角度方法,如factory
或controller
。
我想如果可能的话,用TypeScript做一个新方法。
有什么想法吗?
答案 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。