Я использую API поиска изображений Bing в Netbeans Java 8. Я правильно получил данные JSON, около 263 совпадений.Каждое совпадение имеет свои данные на ключе «value», а каждое изображение хранится в ключе «contentUrl».
Например:
Я получаю contentUrl какa String, затем преобразуйте его, используя URL в качестве следующего примера кода:
String firstMatch = (String) firstMatch.get("contentUrl");
URL url1 = new URL(firstMatch);
Image cakePic = ImageIO.read(url1);
ImageIcon cakeIcon = new ImageIcon(cakePic);
Теперь проблемы:
На моих первых 3 совпадениях изображений или URL "contentUrl" я могу получить толькои покажи первый матч.Второй и третий выдают исключение нулевого указателя следующим образом:
Исключение в потоке "AWT-EventQueue-0" java.lang.NullPointerException
Я напечатал переменные URLна system.out, моего собственного тестирования.Я использовал запрос "вкусные салаты Энн Уилсон" (перевод с испанского).Я вставил эти URL в Firefox, и изображения не показали проблем.
Из этих первых 3 совпадений я могу загрузить только первое совпадение.2-й и 3-й бросок исключения нулевого указателя.Я пробовал каждый матч в одиночку и все еще получал исключение нулевого указателя.
http://globedia.com/imagenes/noticias/2011/12/17/deliciosas-ensaladas-anne-wilson_1_1014200.jpg
http://librosgratisxd.com/wp-content/uploads/2017/07/deliciosas-ensaladas-de-anne-wilson2.jpg
http://librosgratisxd.com/wp-content/uploads/2017/08/deliciosas-recetas-de-carne-picada-de-anne-wilson-150x150.jpg
Я подозреваю, чтоВ ImageIO.read (URL) отсутствует то, что нужно серверу.Может быть, useragent?реферер?Я попробовал другой из 263 матчей, а некоторые работают, а другие нет.Пожалуйста, помогите!
РЕДАКТИРОВАТЬ: добавил второе изображение соответствует JSON данных.Это выдает исключение нулевого указателя.
"webSearchUrl":"https:\/\/www.bing.com\/images\/search?view=detailv2&FORM=OIIRPO&q=Deliciosas+ensaladas+-+Anne+Wilson.pdf&id=3BFE78A6DEFEEF3854FED2B49A902EC885D1037C&simid=607995057971464317",
"name":"Deliciosas ensaladas ( Anne Wilson)",
"thumbnailUrl":"https:\/\/tse3.mm.bing.net\/th?id=OIP.cB5jsoePgzfSdxEf8kDIUQDJEs&pid=Api",
"datePublished":"2012-01-08T05:52:00.0000000Z",
"isFamilyFriendly":true,
"contentUrl":"http:\/\/globedia.com\/imagenes\/noticias\/2011\/12\/17\/deliciosas-ensaladas-anne-wilson_1_1014200.jpg",
"hostPageUrl":"http:\/\/globedia.com\/deliciosas-ensaladas-anne-wilson",
"contentSize":"114736 B",
"encodingFormat":"jpeg",
"hostPageDisplayUrl":"globedia.com\/deliciosas-ensaladas-anne-wilson",
"width":344,
"height":512,
"hostPageFavIconUrl":"https:\/\/www.bing.com\/th?id=AR_6305881f91324e69f0fc25409f3f15c0&pid=Api",
"thumbnail":{
"width":204,
"height":304
},
"imageInsightsToken":"ccid_cB5jsoeP*mid_3BFE78A6DEFEEF3854FED2B49A902EC885D1037C*simid_607995057971464317*thid_OIP.cB5jsoePgzfSdxEf8kDIUQDJEs",
"insightsMetadata":{
"pagesIncludingCount":6,
"availableSizesCount":4
},
"imageId":"3BFE78A6DEFEEF3854FED2B49A902EC885D1037C",
"accentColor":"A33E28"
}
РЕДАКТИРОВАТЬ 2: Я попытался использовать библиотеку ввода-вывода apache commons и использовал
FileUtils.copyURLToFile (url, file);
Написанный файл был html-файлом с таким содержанием:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://librosgratisxd.com/wp-content/uploads/2017/07/deliciosas-ensaladas-de-anne-wilson2.jpg">here</a>.</p>
</body></html>
По сути, это тот же URL, но с «https» на передней панели.Блин.