我正在尝试使用WordPress的核心功能wp_remote_post
将数据发布到服务器并从那里获得响应。我是PHP和WordPress的新手。当我运行以下代码时,我得到了
捕获致命错误:无法转换类stdClass的对象 串入 /var/www/wp-projects/csrvtool.com/wp-content/themes/yrc_csrvtool/ajax.php 第146行
是。这一行:
tt_platform_api_wordpress_request($url_send, $arr, 'helper/ping', 120);
/**
* Wordpress request handler
* @param string $url
* @param array $params
* @param string $endpoint
* @param int $timeout in seconds
* @return object|string
*/
$url_send = "https://api.emailer.traveltime.com/v1/";
$arr = array(
'accessToken' => 'xxxx-xxxx-xxxx-xxxx',
'username' => 'bob',
'location' => array(
'city' => 'Kansas City',
'state' => 'Missouri'
)
);
tt_platform_api_wordpress_request($url_send, $arr, 'helper/ping', 120);
function tt_platform_api_wordpress_request($url, $params, $endpoint, $timeout) {
if(!function_exists('wp_remote_post')) return FALSE;
$response = wp_remote_post(
$url,
array(
'timeout' => $timeout,
'headers' => array( 'Content-Type' => 'application/json' ),
'body' => json_encode( (object) $params )
)
);
if( !is_wp_error($response) ) {
return (object) array(
'data' => $response['body'],
'code' => $response['response']['code']
);
} else {
return 'wp_remote_post returned an error for ' . $endpoint . ': ' . var_export($response, TRUE);
}
}
修改
我尝试var_dump ( (object) $arr );
输出以下内容:
object(stdClass)#546 (3) { ["accessToken"]=> string(36) "76A4412A-4737-4DB7-9098-4D4698FE895C" ["username"]=> string(3) "bob" ["location"]=> array(2) { ["city"]=> string(11) "Kansas City" ["state"]=> string(8) "Missouri" } }
请帮助我理解我做错了什么以及做错的正确方法。
答案 0 :(得分:0)
您的帖子似乎没有显示您将对象实际投射到字符串的部分。
根据你的代码,你可能正在使用tt_platform_api_wordpress_request
的结果,这是stdClass(成功时)。也许你正在回应它,或者将它连接起来或者将它传递给其他将它视为字符串的函数。您的代码未显示此内容。
不要尝试将stdClass(或数组)用作字符串。处理它就像它一样。
答案 1 :(得分:-1)
看起来您正在对对象进行类型转换响应,然后尝试将其作为数组进行访问。删除(对象)并将响应用作常规数组。希望有所帮助。