Curl Linkedin营销API 3月31日查询更新

Curl Linkedin营销API 3月31日查询更新,curl,http-headers,linkedin,multipartform-data,linkedin-api,Curl,Http Headers,Linkedin,Multipartform Data,Linkedin Api,有些人可能知道,Linkedin营销API宣布,他们将从2021年3月31日开始拒绝不符合新标准的API调用。所以我开始更新我的服务。然而,有这样一个问题。文档中给出的示例CURL命令不起作用 你以前遇到过这样的问题吗?如果我需要向您展示几个示例: curl -X POST https://api.linkedin.com/v2/adCreativesV2 \ -H 'X-HTTP-Method-Override: PUT' \ -H 'Content-Type: multipart/m

有些人可能知道,Linkedin营销API宣布,他们将从2021年3月31日开始拒绝不符合新标准的API调用。所以我开始更新我的服务。然而,有这样一个问题。文档中给出的示例CURL命令不起作用

你以前遇到过这样的问题吗?如果我需要向您展示几个示例:

curl -X POST https://api.linkedin.com/v2/adCreativesV2 \
  -H 'X-HTTP-Method-Override: PUT' \
  -H 'Content-Type: multipart/mixed; boundary=xyz;' \
  -H 'X-RestLi-Method: BATCH_PARTIAL_UPDATE' \
  -H 'Authorization: Bearer access_token' \
  -H 'X-RestLi-Protocol-Version: 2.0.0' \
  --data $'--xyz\r\nContent-Type: application/json\r\n\r\n{"entities": {{"47770196": {"patch": {"$set": {"status": "ACTIVE"}}}}}}\r\n--xyz--'
答复:

{
    "serviceErrorCode": 0,
    "message": "Invalid tunneled request - Missing start boundary",
    "status": 400
}
文档中提到的GET请求转换为POST work fine,但POST请求中使用的头的示例:
-H内容类型:multipart/mixed;边界=xyz导致问题的原因

编辑:

正如Matteo在下面所说,问题出在
\r\n
上,但我在我的应用程序中使用了PHP CURL。我不确定如何将
\r\n
翻译为回车。这是一个使用示例:

    $ch = curl_init();

    $jsonData = "
    --xyz
    Content-Type: application/json" 
    . json_encode($parameters, JSON_UNESCAPED_SLASHES)
    . 
    "--xyz--";

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt(
        $ch,
        CURLOPT_HTTPHEADER,
        [
        'Authorization Bearer $access_token',
        'Content-Type: multipart/mixed; boundary=xyz;',
        'X-RestLi-Protocol-Version: 2.0.0',
        'X-HTTP-Method-Override: PUT'
    ]);

    $result = curl_exec($ch);
    $error = curl_error($ch);

    curl_close($ch);

尝试使用回车翻译每个
\r\n
,例如:

curl -X POST 'https://api.linkedin.com/v2/adCreativesV2' \
  -H "X-HTTP-Method-Override: PUT" \
  -H "Content-Type: multipart/mixed; boundary=xyz" \
  -H "X-RestLi-Method: BATCH_PARTIAL_UPDATE" \
  -H "X-RestLi-Protocol-Version: 2.0.0 " \
  --data $'--xyz\r\nContent-Type: application/x-www-form-urlencoded
ids=List(123)
--xyz
Content-Type: application/json

{"entities": {{"123": {"patch": {"$set": {"status": "ACTIVE"}}}}}}
--xyz--'

有关更多信息,请参阅有关多部分如何工作的信息

PS:这不是我第一次在linkedin文档中找到它

编辑:

PHP示例代码:

<?php

$ch = \curl_init();
$url = "https://api.linkedin.com/v2/adCreativesV2";
$parameters = [
    "entities" => [
        [
            [
                "47770196" => [
                    "patch" => [
                        "\$set" => [
                            "status" => "ACTIVE",
                        ],
                    ],
                ],
            ],
        ],
],
];

$jsonData = "
--xyz
Content-Type: application/json"
. json_encode($parameters, JSON_UNESCAPED_SLASHES)
.
"--xyz--";

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt(
$ch,
CURLOPT_HTTPHEADER,
[
'Authorization Bearer $access_token',
'Content-Type: multipart/mixed; boundary=xyz;',
'X-RestLi-Protocol-Version: 2.0.0',
'X-HTTP-Method-Override: PUT'
]);

$result = curl_exec($ch);
$error = curl_error($ch);

print_r($result);
print_r($error);


curl_close($ch);

您可以发布您尝试迁移的请求吗?他的案子?嗯。。他们没有一个真的在工作。上面的例子就是其中之一。。你试过了吗?你可以从网上查到,非常感谢。这绝对有效。但我在我的应用程序中使用了PHP CURL。但我不知道该怎么做。我编辑了我的问题。请您检查一下好吗?抱歉@MuratColyaran我无法用PHP复制问题:我的代码退出时出现了“空oauth2访问令牌”错误,我在删除双引号和
--xyz
之间的空格时解决了这个问题,如下所示:
$jsonData=“--xyz
现在可以工作了。再次感谢@Matteo
>php -f src/ln.php
{"serviceErrorCode":65604,"message":"Empty oauth2 access token","status":401}%