我正在研究关于WCF客户端和JAX-WS服务之间的SOAP连接的非常轻松和小型的项目。我会尽可能简化问题,我将使用假货。假设我有WS服务:
@WebService(serviceName="Example", targetNamespace="http://please.help.me/")
public class SimpleService {
@WebMethod(operationName="exampleOp")
public String exampleOp(@WebParam(name="example", targetNamespace="http://please.help.me/") String example) {
return "Do nothing";
}
}
好的,所以生成了WSDL文件(重要的是它):
<xs:complexType name="exampleOp">
<xs:sequence>
<xs:element form="qualified" minOccurs="0" name="example" type="xs:string" />
</xs:sequence>
</xs:complexType>
我使用WSDL中的svcutil.exe生成C#文件,它给了我:
[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://please.help.me/", Order=0)]
public string example;
之后,如果我调用此方法,来自客户端的消息就是这样:
<exampleOp xmlns="http://please.help.me">
<example>Blah blah blah</example>
</exampleOp>
但只有java接受的(为了上帝的缘故,它是合格的形式!):
<exampleOp xmlns="http://please.help.me" xmlns:d="http://please.help.me">
<d:example>Blah blah blah</example>
</exampleOp>
我如何强迫一方与合格的名字清楚地沟通?请。