我有一个网络服务
`<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<AuthenticationHeader xmlns="http://tempuri.org/">
<UserID>int</UserID>
<Password>string</Password>
</AuthenticationHeader>
</soap:Header>
<soap:Body>
<InsertPartnerComplaint xmlns="http://tempuri.org/">
<ServicePartner>
<PartnerID>int</PartnerID>
<VCNo>string</VCNo>
<MobileNo>string</MobileNo>
<Remarks>string</Remarks>
<ReferenceNo>string</ReferenceNo>
<ComplaintNo>decimal</ComplaintNo>
<Status>short</Status>
<ErrorDescription>string</ErrorDescription>
<SyncStatus>short</SyncStatus>
<ClientIPAddress>string</ClientIPAddress>
</ServicePartner>
</InsertPartnerComplaint>
</soap:Body>
</soap:Envelope>`
我无法在其中添加身份验证标头,我正在采用这种方法
`PartnerComplaintServices partnerComplaintServices=new PartnerComplaintServices();
PartnerComplaintServicesSoap partnerComplaintServicesSoap=partnerComplaintServices.getPartnerComplaintServicesSoap();
ServicePartner servicePartner=new ServicePartner();
System.out.println(partnerComplaintServices.getHandlerResolver());
servicePartner.setPartnerID(1);
servicePartner.setVCNo("01507400066");
servicePartner.setMobileNo("9872345648");
servicePartner.setRemarks("test");
servicePartner.setReferenceNo("test");
partnerComplaintServicesSoap.insertPartnerComplaint(servicePartner);`
有一个包含身份验证的objectfactory。 wldl的网址是
http://180.179.201.148:9443/Services/ServicePartner/PartnerComplaintServices.asmx?WSDL
答案 0 :(得分:2)
我在类中创建了那些静态方法,但是特定于轴。
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPException;
import org.apache.axis.client.Stub;
import org.apache.axis.message.PrefixedQName;
import org.apache.axis.message.SOAPHeaderElement;
public class SoapHeaderCreator {
/**
*
* @param stub
* @param user
* @param password
* @throws SOAPException
*/
public static void addAuthenticationOASIS(Stub stub, String user, String password) throws SOAPException{
//Define security header
QName qname = new QName("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd","Security","wsse");
SOAPHeaderElement header = new SOAPHeaderElement(qname);
String token = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText";
header.setMustUnderstand(true);
// header.setActor("");
SOAPElement node = header.addChildElement("UsernameToken");
SOAPElement node2 = node.addChildElement("Username");
node2.addTextNode(user);
SOAPElement node3 = node.addChildElement("Password");
node3.addTextNode(password);
PrefixedQName name = new PrefixedQName("", "Type", "");
node3.addAttribute(name, token);
stub.setHeader(header);
}
}