Soap 如何将Apex中的passwordtext类型添加到SOQLWebService调用中?

Soap 如何将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

我有一个webservice调用,它的xml输出来自下面的安全类,该安全类来自OASIsovergWSSecurity

<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'};
}