Soap 如何将Apex中的passwordtext类型添加到SOQLWebService调用中?
我有一个webservice调用,它的xml输出来自下面的安全类,该安全类来自OASIsovergWSSecuritySoap 如何将Apex中的passwordtext类型添加到SOQLWebService调用中?,soap,wsdl,apex-code,apex,wsse,Soap,Wsdl,Apex Code,Apex,Wsse,我有一个webservice调用,它的xml输出来自下面的安全类,该安全类来自OASIsovergWSSecurity <wsse:UsernameToken> <wsse:Username>XXXXXXXX</wsse:Username> <wsse:Password>xxxxxxxxxxxx</wsse:Password></wsse:UsernameToken> publ
<wsse:UsernameToken>
<wsse:Username>XXXXXXXX</wsse:Username>
<wsse:Password>xxxxxxxxxxxx</wsse:Password></wsse:UsernameToken>
public class OasisOpenOrgWssSecuritySecext
}
需要转换上述代码,以便web服务调用的输出如下所示
<wsse:UsernameToken>
<wsse:Username>XXXXXXXX</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">xxxxxxxxxxxx</wsse:Password>
XXXXXXXX
XXXXXXXXXX
我不知道如何在密码中添加类型参数。请帮帮我试试这个:
// UserToken Class
public class UsernameToken
{
// Constructor for UsernameToken used to pass in username and password parameters
public UsernameToken(String username, String password)
{
this.Username = username;
this.Password = password;
this.Nonce = generateNounce();
this.Created = generateTimestamp();
this.Type_x = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText';
}
public String Username;
public String Password;
public String Nonce;
public String Created;
public String Type_x;
private String[] Username_type_info = new String[]{'Username','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
private String[] Password_type_info = new String[]{'Password','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
private String[] Nonce_type_info = new String[]{'Nonce','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
private String[] Created_type_info = new String[]{'wsu:Created','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
private String[] Type_x_att_info = new String[]{'Type'};
private String[] apex_schema_type_info = new String[]{'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd','true','false'};
private String[] field_order_type_info = new String[]{'Username','Password','Nonce','Created'};
// Generate Nounce, random number base64 encoded
public String generateNounce()
{
Long randomLong = Crypto.getRandomLong();
return EncodingUtil.base64Encode(Blob.valueOf(String.valueOf(randomLong)));
}
// Generate timestamp in GMT
public String generateTimestamp()
{
return Datetime.now().formatGmt('yyyy-MM-dd\'T\'hh:mm:ss\'Z\'');
}
}
公共类安全性secext { } 输出是,它有类型,但不接受我添加的密码
<Password Type=""/>
如果我按如下所示更改password_token类,则输出显示为
<Password Type=""><Password>xxxxx</Password></Password>
public class Password_element {
public Password_element(String passwords){
this.password = passwords;
}
public String password;
public String Type = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText';
public String Type_x = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText';
private String[] password_type_info = new String[]{'password','http://www.w3.org/2001/XMLSchema','String','0','1','false'};
private String[] Type_att_info = new String[]{'Type'};
private String[] apex_schema_type_info = new String[]{'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd','true','false'};
private String[] field_order_type_info = new String[]{'Password'};
}
xxxxx
公共类密码元素{
公共密码\u元素(字符串密码){
this.password=密码;
}
公共字符串密码;
公共字符串类型=http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText';
公共字符串类型http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText';
私有字符串[]密码\类型\信息=新字符串[]{'password','http://www.w3.org/2001/XMLSchema“,”字符串“,”0“,”1“,”假“};
私有字符串[]Type_att_info=新字符串[]{'Type'};
私有字符串[]顶点\模式\类型\信息=新字符串[]{'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd“,”真“,”假“};
私有字符串[]字段\顺序\类型\信息=新字符串[]{'Password'};
}
我在这里发现了一个类似的问题:
显然,不可能在简单元素上创建属性。该属性不起作用,它将向用户名标记添加类型。我在password中添加了type标记,但实际密码变为空。我的变化如下
public class UsernameToken{public UsernameToken(字符串用户名,字符串密码){this.username=username;PasswordToken=newpassword_元素(密码);}
<Password Type=""/>
<Password Type=""><Password>xxxxx</Password></Password>
public class Password_element {
public Password_element(String passwords){
this.password = passwords;
}
public String password;
public String Type = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText';
public String Type_x = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText';
private String[] password_type_info = new String[]{'password','http://www.w3.org/2001/XMLSchema','String','0','1','false'};
private String[] Type_att_info = new String[]{'Type'};
private String[] apex_schema_type_info = new String[]{'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd','true','false'};
private String[] field_order_type_info = new String[]{'Password'};
}