问题描述
我们需要创建一个自己的C#WebAPI项目,该项目将连接Business Central并将数据插入/更新到Items中。进行搜索之后,我们发现可以使用下面链接中给出的Business Central API来实现这一点。 ://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-develop-connect-apps
在这里,我们听不懂
如果有人拥有C#代码段/示例,请与我们分享,这对我们真的很有帮助。
或者像CRM SDK一样,有没有可用的SDK?
解决方法
我们应该如何连接到Business Central?
如果您要谈论使用代码将其连接到BC,则将需要Business Central用户的用户名和Web访问密钥,该密钥与AAD用户凭据不同。
我们如何调用商品API和参数是什么?
请找到以下示例代码,这些代码可能有助于您了解如何调用API
string url = "https://api.businesscentral.dynamics.com/v2.0/<<Your Environment Name>>/api/v1.0/companies(<<GUID of the company for which item/items needs to be retrieved/added/updated>>)/items";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpClient httpClient = new HttpClient();
String username = "<<UserName>>";
String password = "<<WebAccessKey>>";
String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(username + ":" + password));
//Get Request for all Items
HttpRequestMessage readRequest = new HttpRequestMessage(HttpMethod.Get,url);
readRequest.Headers.Add("Authorization","Basic " + encoded);
HttpResponseMessage readResponse = httpClient.SendAsync(readRequest).Result;
string content = string.Empty;
using (StreamReader stream = new StreamReader(readResponse.Content.ReadAsStreamAsync().Result))
{
content = stream.ReadToEnd();
}
//Get Request for a specific Item
string specificItemURl = url + "(<<Guid of the item to be reteieved>>)";
HttpRequestMessage readSpecificRequest = new HttpRequestMessage(HttpMethod.Get,specificItemURl);
readSpecificRequest.Headers.Add("Authorization","Basic " + encoded);
HttpResponseMessage readSpecificResponse = httpClient.SendAsync(readSpecificRequest).Result;
string specificItem = string.Empty;
using (StreamReader streamSpecificItem = new StreamReader(readSpecificResponse.Content.ReadAsStreamAsync().Result))
{
specificItem = streamSpecificItem.ReadToEnd();
}
//Create Request
string jsonObject = "{'number':'18962-S','displayName':'ATHENS Desk 3','type':'Inventory','itemCategoryId':'6d4e5f4d-8ad1-ea11-bb85-000d3a2a9e6e','itemCategoryCode':'TABLE','blocked':false,'baseUnitOfMeasureId':'354f6647-8ad1-ea11-bb85-000d3a2a9e6e','gtin':'','unitPrice':1000.8,'priceIncludesTax':false,'unitCost':780.7,'taxGroupId':'fc4c5f4d-8ad1-ea11-bb85-000d3a2a9e6e','taxGroupCode':'FURNITURE','baseUnitOfMeasure':{'code':'PCS','displayName':'Piece','symbol':null,'unitConversion':null}}";
HttpRequestMessage createRequest = new HttpRequestMessage(HttpMethod.Post,url);
createRequest.Content = new StringContent(jsonObject,Encoding.UTF8,"application/json");
createRequest.Headers.Add("Authorization","Basic " + encoded);
HttpResponseMessage createResponse = httpClient.SendAsync(createRequest).Result;
我们如何查看可用的API列表?
您将需要具有管理角色的用户登录到Business Central实例。登录后,从功能区上单击Services,然后选择Web Services。您应该能够查看所有api端点。
希望这可以帮助您实现所要达到的目标。