我尝试使用wp_remote_post()
制作google url shortener但是我得到了错误结果,
我知道如何使用CURL,但WordPress中不允许使用CURL!
使用WordPress的API资源:
http://codex.wordpress.org/Function_Reference/wp_remote_post
http://codex.wordpress.org/Function_Reference/wp_remote_retrieve_body
http://codex.wordpress.org/HTTP_API#Other_Arguments
http://codex.wordpress.org/Function_Reference/wp_remote_post#Related
此google网址缩短API文档:
https://developers.google.com/url-shortener/v1/getting_started#shorten
这是我的代码:
function google_url_shrt{
$url = 'http://example-long-url.com/example-long-url'; // long url to short it
$args = array(
"headers" => array( "Content-type:application/json" ),
"body" => array( "longUrl" => $url )
);
$short = wp_remote_post("https://www.googleapis.com/urlshortener/v1/url", $args);
$retrieve = wp_remote_retrieve_body( $short );
$response = json_decode($retrieve, true);
echo '<pre>';
print_r($response);
echo '</pre>';
}
答案 0 :(得分:2)
如果要更改POST请求的内容类型,WordPress API要求headers
数组包含元素content-type
。
此外,您的HTTP请求的body
似乎是作为PHP数组传递的,而不是Google Shortener API所需的JSON字符串。
在json_encode语句中包含body
的数组定义,并将headers
字段设为子数组,然后尝试一下:
$args = array(
'headers' => array('content-type' => 'application/json'),
'body' => json_encode(array('longUrl' => $url)),
);
另外,您可以自己编写JSON格式,因为它非常简单:
$args = array(
'headers' => array('content-type' => 'application/json'),
'body' => '{"longUrl":"' . $url . '"}',
);