标签: dynamics-business-central

MS Dynamics 365 商务中心。API POST、PATCH、DELETE 不起作用

我们已经在我们的服务器上安装了 MS Dynamics 365 Business Central(我不知道如何查看当前安装的版本)。我们对我们的请求使用oData v4协议。

任务

我们需要从 PHP 对这个系统进行 API 调用

问题

当 GET 请求运行良好时,不可能发出 POST、PATCH、DELETE 请求。

得到

要求:

获取 https://d365bc.vendor.com:7058/attain/ODataV4/Company('{{company}}')/Customer

回复

{
    "@odata.context": "https://d365bc.vendor.com:7058/attain/ODataV4/$metadata#Company('...')/Customer",
    "value": [
        {
            "@odata.etag": "W/\"JzQ0O29EcmJmcGs4V3NRMHlEQ0Fxa0JxL1N0bi9xZjY5UDFQakZ0U2tBUGU1Kzg9MTswMDsn\"",
            "No": "01121212",
            "Name": "Spotsmeyer's Furnishings",
            "Responsibility_Center": "",
            "Location_Code": "YELLOW",
            "Post_Code": "US-FL 37125",
            "Country_Region_Code": "US",
            "Phone_No": "",
            "IC_Partner_Code": "",
            "Contact": "Mr. Mike Nash",
            "Salesperson_Code": "JR",
            "Customer_Posting_Group": "FOREIGN",
            "Gen_Bus_Posting_Group": "EXPORT",
            "VAT_Bus_Posting_Group": "EXPORT",
            "Customer_Price_Group": "",
            "Customer_Disc_Group": "",
            "Payment_Terms_Code": "1M(8D)",
            "Reminder_Terms_Code": "FOREIGN",
            "Fin_Charge_Terms_Code": "2.0 FOR.",
            "Currency_Code": "USD",
            "Language_Code": "ENU",
            "Search_Name": …
Run Code Online (Sandbox Code Playgroud)

api microsoft-dynamics odata dynamics-business-central

7
推荐指数
1
解决办法
1715
查看次数

C# OData 服务器违反了协议。部分=响应状态行

我正在 C# 应用程序中访问 Dynamics 365 Business Central OData API,当访问本地系统中的数据正常时,当我们将应用程序部署到客户端服务器时,他们随机 (50%) 收到错误“服务器提交了协议”违规。Section=ResponseStatusLine”。

我已经检查了文章https://techcommunity.microsoft.com/t5/iis-support-blog/protocol-violation-section-responsestatusline/ba-p/1227792并应用了所有 3 个建议,但没有一个起作用

我可以毫无问题地访问本地系统中的客户端 Business Central API 集成应用程序。

假设这是客户端防火墙或负载均衡器问题。但无法找到解决方案。

c# web-services odata dynamics-business-central

5
推荐指数
1
解决办法
800
查看次数

为什么我总是收到“服务器已拒绝客户端凭据。” 当我调用业务中心API时?

这是我的 MSAL 身份验证:

@app.route('/get-microsoft-data', methods=('GET', 'POST'))
def get_microsoft_token():
    public_app = ConfidentialClientApplication(
        client_id="<client_id>", authority="https://login.microsoftonline.com/<tenant_id>",
        client_credential="<client_secret>"
    )
    
    result = None
    result = public_app.acquire_token_silent(["https://api.businesscentral.dynamics.com/.default"], account=None)

    if not result:
        print("No suitable token exists in cache. Let's get a new one from AAD.")
        result = public_app.acquire_token_for_client(scopes=["https://api.businesscentral.dynamics.com/.default"])
        
    if "access_token" in result:
        global microsoft_token
        microsoft_token = result["access_token"]

    return redirect('/') 
Run Code Online (Sandbox Code Playgroud)

这是我对业务中心 api 的调用:

@app.route('/send-data-to-microsoft', methods=('GET', 'POST'))
def send_data_to_microsoft():
    print(microsoft_token)
    
    headers = {
        "Authorization": "Bearer " + microsoft_token
    }
    
    r = requests.get("https://api.businesscentral.dynamics.com/v1.0/<tenant_domain>/sandbox/api/v1.0/companies", headers=headers)
    print(r.json())
    return redirect('/')
Run Code Online (Sandbox Code Playgroud)

这是我调用 /send-data-to-microsoft 时遇到的错误: …

python azure azure-ad-msal dynamics-business-central

1
推荐指数
1
解决办法
7495
查看次数