这是我的设置,我有一个WSDL文件,我导入我的应用程序,它创建了参考,我可以打电话来发出我的请求。一切都很好,除了请求缺少名称空格的前缀。 我的请求看起来像这样(通过SoapUI捕获)
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ATT_ADDR_VAL_REQ xmlns="http://lsr.att.com/preorder">
<ADDR_VAL_REQ xmlns="http://lsr.att.com/obf/tML/UOM">
<HDR>
<MSG_TIMESTAMP>0001-01-01T00:00:00</MSG_TIMESTAMP>
<CC>30H</CC>
<STATE>CA</STATE>
</HDR>
<PON>TESTPON</PON>
</ADDR_VAL_REQ>
</ATT_ADDR_VAL_REQ>
</soap:Body>
</soap:Envelope>
但远程系统需要这样的东西,ns1和ns2只是一个samlpe前缀可能是任何东西
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ns1:ATT_ADDR_VAL_REQ xmlns:ns1="http://lsr.att.com/preorder">
<ns2:ADDR_VAL_REQ xmlns:ns2="http://lsr.att.com/obf/tML/UOM">
<ns2:HDR>
<ns2:MSG_TIMESTAMP>0001-01-01T00:00:00</ns2:MSG_TIMESTAMP>
<ns2:CC>30H</ns2:CC>
<ns2:STATE>CA</ns2:STATE>
</ns2:HDR>
<ns2:PON>TESTPON</ns2:PON>
</ns2:ADDR_VAL_REQ>
</ns1:ATT_ADDR_VAL_REQ>
</soap:Body>
</soap:Envelope>
此处仅供参考,ATT_ADDR_VAL_REQ是什么样的
Partial Public Class ATT_ADDR_VAL_REQ
Private aDDR_VAL_REQField As ADDR_VAL_REQ
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute([Namespace]:="http://lsr.att.com/obf/tML/UOM")> _
Public Property ADDR_VAL_REQ() As ADDR_VAL_REQ
Get
Return Me.aDDR_VAL_REQField
End Get
Set
Me.aDDR_VAL_REQField = value
End Set
End Property
End Class
所以我想知道我可以设置系统使用名称空间前缀吗?
答案 0 :(得分:0)
的样本
<ns1:ATT_ADDR_VAL_REQ xmlns:ns1="http://lsr.att.com/preorder">
<ns2:ADDR_VAL_REQ xmlns:ns2="http://lsr.att.com/obf/tML/UOM">
不是有效的XML文档,因为未定义ns1和ns2。当使用前缀
时,它看起来像这样<ATT_ADDR_VAL_REQ xmlns="http://lsr.att.com/preorder">
<ADDR_VAL_REQ xmlns="http://lsr.att.com/obf/tML/UOM">
但其含义与
完全相同/*All tasks*/
app.get('/allTasks',(req,res)=>{ //get (go to) the allTasks (hbs file)
Todo.find().then((todos) => {
//console.log(todos);
var arrayOfTodos = [];
var missionIndex = 0;
todos.forEach(function(element){
//console.log("\n\n\n\n\n elemnt details: ",element.text + "\n",element.completed+"\n");
missionIndex = missionIndex + 1;
var addToArrayJson = {
text: element.text,
completed: element.completed,
missionNumber: missionIndex
}
arrayOfTodos.push(addToArrayJson);
console.log("ff\n\n", addToArrayJson);
});
res.render("allTasks.hbs", {
pageTitle: "All tasks: ",
todos: arrayOfTodos
});
console.log("\n\n\n\n\n\n\ is::: \n\n\n\n\n",arrayOfTodos);
});
console.log("req is: \n\n\n", req);
});
所以请求应该在服务器端传递。
您不能通过我认为的配置或属性来影响使用前缀。它需要编写自己的序列化程序或一些IEndpointBehavior + IClientMessageInspector来修改输出。