【问题标题】:Image search Bing API. Get an URL of image图片搜索必应 API。获取图片的网址
【发布时间】:2015-12-08 12:02:56
【问题描述】:

我在博客中使用了图像搜索 Bing API。我有一个请求给我这个回复:

stdClass Object
(
    [d] => stdClass Object
        (
            [results] => Array
                (
                    [0] => stdClass Object
                        (
                            [__metadata] => stdClass Object
                                (
                                    [uri] => https://api.datamarket.azure.com/Data.ashx/Bing/Search/Image?Query='Kitchen'&Market='en-us'&$skip=0&$top=1
                                    [type] => ImageResult
                                )

                            [ID] => a40b8c85-8a6b-45a8-bce2-c07b16a942e6
                            [Title] => Our Kitchen Remodel is Complete!!! @ A Well Dressed Home
                            [MediaUrl] => http://awelldressedhome.com/wp-content/uploads/2010/10/Kitchen-31.jpg
                            [SourceUrl] => http://awelldressedhome.com/496-our-kitchen-remodel-is-complete/
                            [DisplayUrl] => awelldressedhome.com/496-our-kitchen-remodel-is-complete
                            [Width] => 4000
                            [Height] => 3000
                            [FileSize] => 5062458
                            [ContentType] => image/jpeg
                            [Thumbnail] => stdClass Object
                                (
                                    [__metadata] => stdClass Object
                                        (
                                            [type] => Bing.Thumbnail
                                        )

                                    [MediaUrl] => http://ts4.mm.bing.net/th?id=OIP.Mf5b92bb26c7b2ed74a31df5d5836cb70H0&pid=15.1
                                    [ContentType] => image/jpg
                                    [Width] => 480
                                    [Height] => 360
                                    [FileSize] => 25427
                                )

                        )

当我尝试获得这样的 [MediaUrl] 时:

$key = "cricket";
$accountKey = 'iXX2NrEp8gfTPvsahjaj2KUAT+E7Quwelff4B6+MDnE';
$ServiceRootURL =  'https://api.datamarket.azure.com/Bing/Search/';
$WebSearchURL = $ServiceRootURL . 'Image?$format=json&Query=';

$request = $WebSearchURL . urlencode( '\'' . $key . '\'');

$process = curl_init($request);
curl_setopt($process, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($process, CURLOPT_USERPWD,  $accountKey . ":" . $accountKey);
curl_setopt($process, CURLOPT_TIMEOUT, 30);
curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($process);

$jsonobj = json_decode($response);

echo('<ul ID="resultList">');

foreach($jsonobj->Results as $value)
{
    echo('<li class="resultlistitem"><a href="' . $value->MediaURL . '">');
    echo('<img src="' . $value->Thumbnail->MediaUrl. '"></li>');
}

echo("</ul>");

我得到一个错误:

试图获取非对象的属性

所以问题是:我做错了什么?我怎样才能从这个回复中得到一个 [MediaUrl]?对不起我的英语,谢谢你的回复。

【问题讨论】:

    标签: json url get request


    【解决方案1】:

    请注意缺少“d”,以及区分大小写的问题,因此请替换:

    $jsonobj->Results
    

    有了这个:

    $jsonobj->d->results
    

    【讨论】:

      最近更新 更多