Hey all,
Ok, this seems to be a bit of an FAQ, but I've searched the list and cant
see why the following shouldn't work. I'm using AXIS 1.0 to call a
webmethods server. I've got WSDL for the service, and am using the
following code - the actual request is further below.
String message = "f_receivePRMessage";
Service service = new Service(new
FileInputStream("f_receivePRMessage.wsdl"),
new QName("http://localhost/",
"http___localhost_processService"));
Call call = (Call) service.createCall(new
QName("http___localhost_processPort0"),
new QName(message));
call.setTargetEndpointAddress(portAddress);
call.registerTypeMapping(PRDetailsArrayItem.class, new
QName("http://www.webMethods.com/noNamespace/", "PRDetailsArrayItem"),
BeanSerializerFactory.class,
BeanDeserializerFactory.class);
call.registerTypeMapping(HashMap.class, new
QName("http://www.w3.org/2001/XMLSchema", "anyType"),
MapSerializerFactory.class,
MapDeserializerFactory.class);
call.setProperty(AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);
call.setProperty(Call.USERNAME_PROPERTY, "user");
call.setProperty(Call.PASSWORD_PROPERTY, "pass");
Object response = call.invoke(new Object[]{txID createPRItem()});
This then gives me the following soap request (excuse the verbosity..., note
the multiRef)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:f_receivePRMessage
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="process">
<transactionID
xsi:type="xsd:string">a519e280-b678-1004-8005-5991bba78578</transactionID>
<PRDetails href="#id0"/>
</ns1:f_receivePRMessage>
<multiRef id="id0" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="ns2:PRDetailsArrayItem"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns2="http://www.webMethods.com/noNamespace/">
<PREQ_ITEM xsi:type="xsd:string">00100</PREQ_ITEM>
<PREQ_NAME xsi:type="xsd:string">LEEA</PREQ_NAME>
<PREQ_DATE xsi:type="xsd:string">20030120</PREQ_DATE>
<SHORT_TEXT xsi:type="xsd:string">da de da</SHORT_TEXT>
<MAT_GRP xsi:type="xsd:string">0100</MAT_GRP>
<PUR_GROUP xsi:type="xsd:string">540</PUR_GROUP>
<QUANTITY xsi:type="xsd:string">1.00</QUANTITY>
<UNIT xsi:type="xsd:string">PUT</UNIT>
<DELIV_DATE xsi:type="xsd:string">2003120</DELIV_DATE>
<ITEM_CAT xsi:type="xsd:string">9</ITEM_CAT>
<SPEC_STOCK xsi:type="xsd:string">K</SPEC_STOCK>
<MATERIAL xsi:type="xsd:string"></MATERIAL>
<TRACKINGNO xsi:type="xsd:string"></TRACKINGNO>
<GR_PR_TIME xsi:type="xsd:string"></GR_PR_TIME>
<C_AMT_BAPI xsi:type="xsd:string">100.00</C_AMT_BAPI>
<PRICE_UNIT xsi:type="xsd:string"></PRICE_UNIT>
<DES_VENDOR xsi:type="xsd:string"></DES_VENDOR>
<SERIAL_NO xsi:type="xsd:string">01</SERIAL_NO>
<CREATED_ON xsi:type="xsd:string">20030120</CREATED_ON>
<G_L_ACCT xsi:type="xsd:string">4703000</G_L_ACCT>
<COST_CTR xsi:type="xsd:string">540014</COST_CTR>
<GR_RCPT xsi:type="xsd:string">123</GR_RCPT>
<UNLOAD_PT xsi:type="xsd:string"></UNLOAD_PT>
<PCKG_NO xsi:type="xsd:string">0000000001</PCKG_NO>
<SERVICE_QTY xsi:type="xsd:string">650.000</SERVICE_QTY>
<BASE_UOM xsi:type="xsd:string">H</BASE_UOM>
<GR_PRICE xsi:type="xsd:string">1000.0000</GR_PRICE>
<SERVICE_TEXT xsi:type="xsd:string"></SERVICE_TEXT>
</multiRef>
</soapenv:Body>
</soapenv:Envelope>
I dont actually have a request to not use multiRef yet, but can see it
coming. Can anyone see why the call
call.setProperty(AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);
isn't preventing the use of multiRef elements?
cheers
dim