我正在为SOAP服务编写PHP包装器并使用类映射选项,因此我可以使用对象而不是数组。这很有效,直到SOAP服务的提供者决定向他们的一个对象添加一个新属性(他们似乎喜欢这样做而不告诉任何人),此时SOAP客户端因错误SOAP-ERROR: Encoding: object has no 'NewlyAddedProperty' property
而破坏了wsdl中不属于类的属性。
我试图通过使用魔法吸气剂并返回false
,null
之类的东西来解决它,但由于它们根据wsdl不是有效值,它仍然会引发致命的错误。
在理想的世界中,即使没有在类上定义属性,客户端也只会在对象上设置新属性,这可能吗?如果不仅仅是抑制错误也没关系。
答案 0 :(得分:2)
您可以移除$http.get
的类映射并使用另一个,例如jsonmapper。
如果你的类被正确注释,它就像这个例子一样简单:
app.controller('CaseNamesController',function($http,$scope){
$scope.names = [];
$http.get('/json/caseNames.json')
.success(function(response){
console.log(response);
$scope.names = response;
})
.error(function(response){
$scope.names =[];
});
});
答案 1 :(得分:1)
SOAP意味着基于HTTP的XML - SOAP服务的所有者不能也不应该知道所有调用它的系统。
这种脆弱性内置于SOAP接口中。该服务应根据其架构验证传入请求。除非他们使该路径可选,否则它将失败。没有'鸭子打字'内置。