google url shortener api with wp_remote_post

时间:2014-10-29 04:57:42

标签: php json wordpress api curl

我尝试使用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>';
}

1 个答案:

答案 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 . '"}',
);