通過基於 REST 契約的 API 匯出記錄
要與 Acumatica ERP 的基於 REST 契約的 API 通訊,你的客戶端應用程式必須始終執行以下 3 個步驟:
-
登入 Acumatica ERP 例項並獲取使用者會話資訊的 cookie
-
與 Acumatica ERP 例項上提供的基於合同的 API 端點之一進行互動
-
從 Acumatica ERP 退出以關閉使用者會話
本主題中提供的所有示例均使用預設端點構建,始終作為標準 Acumatica ERP 安裝過程的一部分進行部署。在 Web 服務端點螢幕(SM.20.70.60)上,你可以檢視現有端點的詳細資訊或配置基於 Acumatica ERP 合同的 Web 服務的自定義端點:
供你參考,以下是上述所有示例中使用的 RestService 類的實現,以與 Acumatica ERP 的基於合同的 Web 服務進行互動:
public class RestService : IDisposable
{
private readonly HttpClient _httpClient;
private readonly string _acumaticaBaseUrl;
private readonly string _acumaticaEndpointUrl;
public RestService(string acumaticaBaseUrl, string endpoint,
string userName, string password,
string company, string branch)
{
_acumaticaBaseUrl = acumaticaBaseUrl;
_acumaticaEndpointUrl = _acumaticaBaseUrl + "/entity/" + endpoint + "/";
_httpClient = new HttpClient(
new HttpClientHandler
{
UseCookies = true,
CookieContainer = new CookieContainer()
})
{
BaseAddress = new Uri(_acumaticaEndpointUrl),
DefaultRequestHeaders =
{
Accept = {MediaTypeWithQualityHeaderValue.Parse("text/json")}
}
};
var str = new StringContent(
new JavaScriptSerializer()
.Serialize(
new
{
name = userName,
password = password,
company = company,
branch = branch
}),
Encoding.UTF8, "application/json");
_httpClient.PostAsync(acumaticaBaseUrl + "/entity/auth/login", str)
.Result.EnsureSuccessStatusCode();
}
void IDisposable.Dispose()
{
_httpClient.PostAsync(_acumaticaBaseUrl + "/entity/auth/logout",
new ByteArrayContent(new byte[0])).Wait();
_httpClient.Dispose();
}
public string GetList(string entityName)
{
var res = _httpClient.GetAsync(_acumaticaEndpointUrl + entityName)
.Result.EnsureSuccessStatusCode();
return res.Content.ReadAsStringAsync().Result;
}
public string GetList(string entityName, string parameters)
{
var res = _httpClient.GetAsync(_acumaticaEndpointUrl + entityName + "?" + parameters)
.Result.EnsureSuccessStatusCode();
return res.Content.ReadAsStringAsync().Result;
}
}