Blackberry kSoap2 & Soap Header

2020-02-26 12:46发布

问题:

Trying to specify a custom soap header. Not sure how the SoapEnvelope.headerOut propery is to be populated.

My code so far?

String soapAction = serviceNamespace + "/SearchCustomer";
SoapObject rpc = new SoapObject(serviceNamespace, "SearchCustomers");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = rpc;
envelope.dotNet = true;
envelope.encodingStyle = SoapSerializationEnvelope.ENC;

rpc.addProperty("searchBy", searchBy);
rpc.addProperty("groupBy", Integer.toString(groupBy));

Here is the header WSDL extract...

<soap:Header>
 <MISHeader xmlns="http://NCBI/WS/CRM">
  <applicationName>string</applicationName>
  <userName>string</userName>
 </MISHeader>
</soap:Header>

回答1:

headerOut is an Element[] that you need to build.

Something like this

  Element usernameElement = new Element().createElement(OASIS_SECURITY_XSD_URL, "Username");
  usernameElement.addChild(Node.TEXT, username);
  Element passwordElement = new Element().createElement(OASIS_SECURITY_XSD_URL, "Password");
  passwordElement.addChild(Node.TEXT, password);

and then add it to an array..