如何使用 Symfony 和 Guzzle 通过 api 更新 woocommerce 产品
How to update woocommerce product via api with Symfony and Guzzle
问题:如何使用 Guzzle 和 guzzle/oauth-subscriber
通过 API 更新 woocommerce 产品的价格
我使用 作为参考来让 oauth1 工作以请求数据,效果很好。只是无法锻炼发送 post 个变量。
大多数教程和 guzzle 文档使用 $client->request('GET', 'http://httpbin.org', [ 'query' => ['foo' => 'bar'] ]);
但这也不起作用:
$response = $client->request('POST', $endpoint, [
'auth' => 'oauth',
'form_params' => [
'price' => '21'
]
]);
这是我目前的代码,用get$client->get()
注释掉什么成功returns一个产品。
$endpoint = 'products/12';
$handler = new \GuzzleHttp\Handler\CurlHandler();
$stack = \GuzzleHttp\HandlerStack::create($handler);
$middleware = new \GuzzleHttp\Subscriber\Oauth\Oauth1([
'consumer_key' => $this->consumer_key,
'consumer_secret' => $this->consumer_secret,
'token_secret' => '',
'token' => '',
'request_method' => Oauth1::REQUEST_METHOD_QUERY,
'signature_method' => Oauth1::SIGNATURE_METHOD_HMAC
]);
$stack->push($middleware);
$client = new \GuzzleHttp\Client([
'base_uri' => $this->url . $this->api,
'handler' => $stack
]);
$response = $client->post( $endpoint, [ 'auth' => 'oauth' ], ['price' => '21'] );
var_dump($response);
//$response = $client->get( $endpoint, [ 'auth' => 'oauth' ] );
//return array(
// 'status' => $response->getStatusCode(),
// 'header' => $response->getHeaderLine('content-type'),
// 'body' => json_decode($response->getBody())
//);
我的代码存在三个问题:
使用 POST 更新,而不是 PUT。如前所述 POST 是创建,而不是更新。
正在阅读 Woocommerce docs 我发现 'price' 是只读的,所以我尝试的参数组合都不起作用。 regular_price
是此处使用的正确参数。
None 我传递给 $client->
的选项有效,它需要是一个查询字符串。我将其附加到 $endpoint
变量。
$endpoint .= "?stock_quantity=456";
$response = $client->put( $endpoint, [ 'auth' => 'oauth' ] );
问题:如何使用 Guzzle 和 guzzle/oauth-subscriber
通过 API 更新 woocommerce 产品的价格我使用
大多数教程和 guzzle 文档使用 $client->request('GET', 'http://httpbin.org', [ 'query' => ['foo' => 'bar'] ]);
但这也不起作用:
$response = $client->request('POST', $endpoint, [
'auth' => 'oauth',
'form_params' => [
'price' => '21'
]
]);
这是我目前的代码,用get$client->get()
注释掉什么成功returns一个产品。
$endpoint = 'products/12';
$handler = new \GuzzleHttp\Handler\CurlHandler();
$stack = \GuzzleHttp\HandlerStack::create($handler);
$middleware = new \GuzzleHttp\Subscriber\Oauth\Oauth1([
'consumer_key' => $this->consumer_key,
'consumer_secret' => $this->consumer_secret,
'token_secret' => '',
'token' => '',
'request_method' => Oauth1::REQUEST_METHOD_QUERY,
'signature_method' => Oauth1::SIGNATURE_METHOD_HMAC
]);
$stack->push($middleware);
$client = new \GuzzleHttp\Client([
'base_uri' => $this->url . $this->api,
'handler' => $stack
]);
$response = $client->post( $endpoint, [ 'auth' => 'oauth' ], ['price' => '21'] );
var_dump($response);
//$response = $client->get( $endpoint, [ 'auth' => 'oauth' ] );
//return array(
// 'status' => $response->getStatusCode(),
// 'header' => $response->getHeaderLine('content-type'),
// 'body' => json_decode($response->getBody())
//);
我的代码存在三个问题:
使用 POST 更新,而不是 PUT。如前所述 POST 是创建,而不是更新。
正在阅读 Woocommerce docs 我发现 'price' 是只读的,所以我尝试的参数组合都不起作用。
regular_price
是此处使用的正确参数。None 我传递给
$client->
的选项有效,它需要是一个查询字符串。我将其附加到$endpoint
变量。
$endpoint .= "?stock_quantity=456";
$response = $client->put( $endpoint, [ 'auth' => 'oauth' ] );