【问题标题】:Acumatica REST API errorAcumatica REST API 错误
【发布时间】:2018-01-03 01:05:20
【问题描述】:

我一直在尝试让一个简单的基于 Acumatica 合同的 REST API GET 调用工作好几个小时,但当它显然超时时,我得到的只是一个错误:“任务已取消。”,没有内在的例外。我已经尝试了很多不同的示例来尝试使用 .NET Core 2.0 和 .NET Framework 4.7.1 来完成此任务,但总是会遇到这个模糊的错误。注意:Postman 中的相同调用工作正常。

请参阅下面的代码,了解我最新版本的简化代码,以尝试让某些东西正常工作。对 GetAsync 的调用会在那里挂起几分钟,然后引发错误。

var str = new StringContent(
    JsonConvert.SerializeObject(
        new
        {
            name = "admin",
            password = "admin",
            company = "Company",
            branch = ""
        }),
        Encoding.UTF8, "application/json");

string baseUrl = "http://localhost/AcuAmazon172040019";

using (HttpClient client = new HttpClient())
using (HttpResponseMessage res = await client.PostAsync(baseUrl + 
    "/entity/auth/login", str))
using (HttpResponseMessage res2 = await client.GetAsync(baseUrl + 
    "/entity/Default/6.00.001/salesorder/so/001337"))
using (HttpContent content = res2.Content)
{
    string data = await content.ReadAsStringAsync();

    if (data != null)
    {
        Console.WriteLine(data);
    }
}

Acumatica v17.204.0019

【问题讨论】:

    标签: rest api acumatica


    【解决方案1】:

    您使用的 URL(端点、实体名称和实体键的所有部分)都区分大小写。使用“SalesOrder”而不是“salesorder”,并且可能使用“SO”而不是“so”

    "/entity/Default/6.00.001/SalesOrder/SO/001337"
    

    【讨论】:

    • 哇,我很惊讶,但也很高兴,就这么简单。你是对的,它正在与 Postman 合作,因为我的情况是正确的。我没有考虑这一点,因为 URL 大小写通常无关紧要,但我并没有考虑将类名和参数作为路径的一部分。我希望异常信息能提供更多信息。非常感谢。
    • 据我了解,Acumatica 的实现会返回您请求的最具体的东西,在这种情况下是一个特定的顺序。但是,如果您请求“../SalesOrder/SO/”,您将请求所有 SO 类型的订单。或“../SalesOrder/”所有销售订单。因为实体字典中不存在“../salesorder/”,所以它实际上试图在端点返回 everything,因此进程挂起并超时。但是,如果没有匹配的顶级实体肯定会出错。
    猜你喜欢
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多