gpt4 book ai didi

php - 如何通过 cURL/PHP 使用 PUT 方法将 JSON 数据发送到 API

转载 作者:可可西里 更新时间:2023-10-31 23:19:30 24 4
gpt4 key购买 nike

我正在尝试使用 cURL/PHP 连接到 API。

我需要在发送 JSON 数据时向此 API 添加一个方法。

这是我的参数 $data = array('__type' => 'urn:inin.com:connection:workstationSettings');

这是我进行 cURL 调用的方式

private function _makeCall($method, $uri, $data = false, $header = NULL, &$httpRespond = array())
{
$ch = curl_init();
$url = $this->_baseURL . $uri;

if(
($method == 'POST' || $method == 'PUT')
&& $data
){
$jsonString = json_encode( $data );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $jsonString );
}

if($method == 'POST'){
curl_setopt($ch, CURLOPT_POST, true);
} elseif( $method == 'PUT'){
curl_setopt($ch, CURLOPT_PUT, true);
} else {
if ($data){
$url = sprintf("%s?%s", $url, http_build_query($data));
}
}

//disable the use of cached connection
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);

//return the respond from the API
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

//return the HEADER respond from the API
curl_setopt($ch, CURLOPT_HEADER, true);

//add any headers
if(!empty($header)){
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
}

//set the URL
curl_setopt($ch, CURLOPT_URL, $url);

//make the cURL call
$respond = curl_exec($ch);

//throw cURL exception
if($respond === false){
$errorNo = curl_errno($ch);
$errorMessage = curl_error($ch);

throw new ApiException($errorMessage, $errorNo);
}

list($header, $body) = explode("\r\n\r\n", $respond, 2);

$httpRespond = $this->_http_parse_headers($header);

$result = json_decode($body, true);

//throw API exception
if( $this->_hasAPIError($result) ){
$errorCode = 0;
if(isset($result['errorCode'])){
$errorCode = $result['errorCode'];
}
throw new ApiException($result['message'], $errorCode);
}

return $result;
}

问题是,每次 API 收到我的 PUT 请求时,它都会提示我在我的 $data 数组中传递了一个缺少的参数

如何正确放置 $jsonString

最佳答案

据我了解,以这种方式使用 PUT 的行为并不符合您的预期。试试这个:

...
if($method == 'POST'){
curl_setopt($ch, CURLOPT_POST, true);
} elseif( $method == 'PUT'){
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
...

引用:Handling PUT/DELETE arguments in PHP

关于php - 如何通过 cURL/PHP 使用 PUT 方法将 JSON 数据发送到 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30085967/

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