我们已将Web服务的WSDL文件转换为salesforce apex类。 Web Service正在以Apache轴Stub身份验证用户名和密码格式接收身份验证凭据。
下面是示例Apache轴Stub身份验证用户名和密码代码。
Service service = new XYZServiceLocator();
URL endpointURL = new URL("https://urllink");
XYZServiceSoapBindingStub stub = new XYZServiceSoapBindingStub(endpointURL, service);
stub.setUsername("username");// void org.apache.axis.client.Stub.setUsername(String username)
stub.setPassword("password");// void org.apache.axis.client.Stub.setPassword(String Password)
QueryResponse qresp = stub.webServiceCall(qr);
我的问题是。我们可以在salesforce Apex类中获取Apache轴Stub身份验证用户名和密码功能。
由于Apex Stub支持HTTP Headers身份验证,它是否也支持Apache轴Stub身份验证?
以下是Salesforce Apex存根HTTP标头身份验证代码
String myData = 'username:password';
Blob hash = Crypto.generateDigest('SHA1',Blob.valueOf(myData));
encodedusernameandpassword = EncodingUtil.base64Encode(hash);
XYZBillingStub.inputHttpHeaders_x.put('Authorization','Basic ' + encodedusernameandpassword );// SALESFORCE STUB
XYZBilling.query(queryReq )// Web Service call
请帮我解决这个问题。
答案 0 :(得分:0)
将顶点代码转换为以下代码后,我成功解决了问题。
String myData = 'username:password';
encodedusernameandpassword = EncodingUtil.base64Encode(Blob.valueOf(myData));
XYZBillingStub.inputHttpHeaders_x.put('Authorization','Basic ' + encodedusernameandpassword );// SALESFORCE STUB
XYZBilling.query(queryReq )// Web Service call
这是一个简单的命中和试用解决方案,我认为Salseforce apex功能仅支持输入HTTP Headers身份验证过程。如果有其他方法可以进行身份验证,请提及。
答案 1 :(得分:0)
看起来你已经找到了解决方案。
如需参考,请查看在线文档的Sending HTTP Headers on a Web Service Callout部分,了解基本身份验证标题。