gpt4 book ai didi

php - 使用 Guzzle 将更新数据发布到 EventBrite API

转载 作者:可可西里 更新时间:2023-11-01 00:56:28 25 4
gpt4 key购买 nike

我可以通过以下代码使用 post 添加事件:

//Create client
$client = new Client([
'base_uri' => 'https://www.eventbriteapi.com/v3/',
]);

$params = [
'event.name.html' => $this->Name,
'event.description.html' => $this->Description,
'event.listed' => false,
'event.start.utc' => $this->StartTime,
'event.start.timezone' => 'Europe/London',
'event.end.utc' => $this->EndTime,
'event.end.timezone' => 'Europe/London',
'event.currency' => 'GBP'
];

try {
//Send new event request
$res = $client->request('POST', "events/", [
'query' => ['token' => env('EVENTBRITE_TOKEN', '')],
'form_params' => $params
]);
} catch (GuzzleException $e) {
return false;
}

但是,当我尝试使用在第一步中创建的 ID 和以下代码更新事件时:

//Send update event request
$res = $client->request('POST', "events/$this->EventBriteID", [
'query' => ['token' => env('EVENTBRITE_TOKEN', '')],
'form_params' => $params
]);

它不会更新事件。请求看起来成功了。状态 200 与事件对象一起返回,但是没有更新任何数据。信息与创建事件时提交的信息保持一致。我做错了什么,我发现很难调试,因为端点返回 200 状态。

请求在 Postman 中运行良好,所以我在 Guzzle 中显然做错了什么。

编辑

作为 $response->request() 的请求输出

Client {#289 ▼
-config: array:8 [▼
"base_uri" => Uri {#298 ▼
-scheme: "https"
-userInfo: ""
-host: "www.eventbriteapi.com"
-port: null
-path: "/v3/"
-query: ""
-fragment: ""
}
"handler" => HandlerStack {#165 ▼
-handler: StreamHandler {#292 ▼
-lastHeaders: []
}
-stack: array:4 [▼
0 => array:2 [▼
0 => Closure {#293 ▼
class: "GuzzleHttp\Middleware"
parameters: {▼
$handler: {▼
typeHint: "callable"
}
}
file: "/home/user/mysite/vendor/guzzlehttp/guzzle/src/Middleware.php"
line: "54 to 69"
}
1 => "http_errors"
]
1 => array:2 [▼
0 => Closure {#296 ▼
class: "GuzzleHttp\Middleware"
parameters: {▼
$handler: {▼
typeHint: "callable"
}
}
file: "/home/user/mysite/vendor/guzzlehttp/guzzle/src/Middleware.php"
line: "148 to 150"
}
1 => "allow_redirects"
]
2 => array:2 [▼
0 => Closure {#295 ▼
class: "GuzzleHttp\Middleware"
parameters: {▼
$handler: {▼
typeHint: "callable"
}
}
file: "/home/user/mysite/vendor/guzzlehttp/guzzle/src/Middleware.php"
line: "27 to 43"
}
1 => "cookies"
]
3 => array:2 [▼
0 => Closure {#286 ▼
class: "GuzzleHttp\Middleware"
parameters: {▼
$handler: {▼
typeHint: "callable"
}
}
file: "/home/user/mysite/vendor/guzzlehttp/guzzle/src/Middleware.php"
line: "216 to 218"
}
1 => "prepare_body"
]
]
-cached: null
}
"allow_redirects" => array:5 [▼
"max" => 5
"protocols" => array:2 [▼
0 => "http"
1 => "https"
]
"strict" => false
"referer" => false
"track_redirects" => false
]
"http_errors" => true
"decode_content" => true
"verify" => true
"cookies" => false
"headers" => array:1 [▼
"User-Agent" => "GuzzleHttp/6.2.1 PHP/7.0.8-0ubuntu0.16.04.3"
]
]
}

最佳答案

所以经过几个小时的绝望,我终于修好了。问题是端点 url 上缺少尾部斜杠:

$res = $client->request('POST', "events/$this->EventBriteID", []);

改为

$res = $client->request('POST', "events/$this->EventBriteID/", []);

现在按预期工作。

关于php - 使用 Guzzle 将更新数据发布到 EventBrite API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41450269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com