Google api php client - Http put request
-
27-06-2021 - |
Вопрос
I'm trying to create a Http put request with google-api-php-client. Oauth is working fine and I can do get requests but I just can't figure out how to do a put.
//While looping over my contacts
$apiClient = new ApiClient();
$apiClient->setAccessToken($this->Auth->user('google_oauth2_token'));
//Getting fresh XML data since I transformed mine into an array
$contactGetRequest = new apiHttpRequest($contact['link'][1]['@href'], 'GET', array('GData-Version' => 3.0));
$rawContactData = $apiClient->getIo()->authenticatedRequest($contactGetRequest);
$contactXml = Xml::build($rawContactData->getResponseBody());
//Not changing anything, just trying to do a PUT request
$contactPutRequest = new apiHttpRequest($contact['link'][2]['@href'], 'PUT', array('GData-Version' => 3.0), $contactXml->asXML());
$response = $apiClient->getIo()->authenticatedRequest($contactPutRequest);
The error is getting is "Content-Type application/x-www-form-urlencoded is not a valid input type.".
It seems that it's trying to do a POST. What is the correct way to do a PUT request?
Решение
I found it. The Content-type value has to be set in the headers parameter. I tought it was done automatically.
$contactPutRequest = new apiHttpRequest($contact['link'][2]['@href'], 'PUT', array('GData-Version' => 3.0, 'Content-type' => 'application/atom+xml; charset=UTF-8; type=entry'), $contactXml->asXML());
Не связан с StackOverflow