So here I'm putting out how to read a user from the Human Resources WSDL.
Before you can actually get this code to work you have to create reference file using svcutil then modify it because it creates 2 and 3 dimensional arrays. This is a problem with Visual Studio.
See here for the pre-reqs and how to fix the Human_Resources.cs file
/////////////////////////
empId = "12345";
var request = new Get_Workers_RequestType { version = "v22.0" };
var workerId = new WorkerObjectIDType()
{
type = "Employee_ID",
Value = empId
};
var idTypes = new List
request.Request_References = new Worker_Request_ReferencesType { Worker_Reference = new WorkerObjectType[1] { new WorkerObjectType() } };
request.Request_References.Worker_Reference[0].ID = idTypes.ToArray();
request.Request_Criteria = new Worker_Request_CriteriaType
{
Exclude_Inactive_Workers = true,
Exclude_Inactive_WorkersSpecified = true
};
var proxy = CreateHumanResourcesProxy();
Get_Workers_ResponseType response = null;
try
{
response = proxy.Get_Workers(request);
Console.WriteLine(response.Response_Data.FirstOrDefault());
string first = response.Response_Data.FirstOrDefault().Worker_Data.Personal_Data.Name_Data.Preferred_Name_Data.Name_Detail_Data.First_Name;
string last = response.Response_Data.FirstOrDefault().Worker_Data.Personal_Data.Name_Data.Preferred_Name_Data.Name_Detail_Data.Last_Name;
Console.WriteLine(first + " " + last);
}
catch (FaultException fe)
{
// _logger.LogError("Error occurred invoking GetWorker", fe);
//return null;
Console.WriteLine("error " + fe.Message);
}
public static Human_ResourcesPortClient CreateHumanResourcesProxy()
{
SecurityBindingElement sb = SecurityBindingElement.CreateUserNameOverTransportBindingElement();
sb.IncludeTimestamp = false;
const int lim = Int32.MaxValue;
var timeout = TimeSpan.FromMinutes(2);
var cb = new CustomBinding(
sb,
new TextMessageEncodingBindingElement(MessageVersion.Soap11, Encoding.UTF8)
{
ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas
{
MaxDepth = lim,
MaxStringContentLength = lim,
MaxArrayLength = lim,
MaxBytesPerRead = lim,
MaxNameTableCharCount = lim
}
},
new HttpsTransportBindingElement
{
MaxBufferPoolSize = lim,
MaxReceivedMessageSize = lim,
MaxBufferSize = lim,
Realm = string.Empty
})
{
SendTimeout = timeout,
ReceiveTimeout = timeout
};
var proxy = new Human_ResourcesPortClient(cb, new EndpointAddress("https://wd5-impl-services1.workday.com/ccx/service/
proxy.ClientCredentials.UserName.UserName = "userName@tenant";
proxy.ClientCredentials.UserName.Password = "pass";
return proxy;
}
/////////////////////////
Keep in mind this will work with a worktype of Employee. You have to change a few things for a Contingent Worker.
No comments:
Post a Comment