2015-07-29 1 views
0

Справочная информацияСкачать медиа-объект в PHPRETS

  • Я хочу, чтобы загрузить фотографии определенного свойства, используя PHPRETS.
  • Моя конфигурация PHPRETS успешно работает для загрузки данных о свойствах. Проблема заключается только в загрузке медиафайлов.
  • Я могу загрузить фотографии с использованием RETS Connector, приложения Windows, что означает, что изображения существуют.
  • Значение, которое я прохожу в качестве ключа объекта (N3273704) является значение, которое я получил от KEYFIELD (ml_num)

KEYFIELD

ml_num 

Код, я бегу

$photos = $rets->GetObject("Property", "Photo", "N3273704", "*", 0); 

var_dump($photos); 

foreach ($photos as $photo) { 
    $listing = $photo['Content-ID']; 
    $number = $photo['Object-ID']; 

    if ($photo['Success'] == true) { 
     file_put_contents("image-{$listing}-{$number}.jpg", $photo['Data']); 
    } else { 
     echo "({$listing}-{$number}): {$photo['ReplyCode']} = {$photo['ReplyText']}\n"; 
    } 
} 

сырье заголовка и ответ

[2015-07-29 13:16:09] PHRETS.DEBUG: Sending HTTP Request for http://rets.torontomls.net:6103/rets-treb3pv/server/getobject (GetObject) {"query":{"Resource":"Property","Type":"Photo","ID":"N3273704:*","Location":0},"headers":{"User-Agent":"PHRETS/2.0","RETS-Version":"RETS/1.5","Accept-Encoding":"gzip"},"cookies": ..."]} [] 
[2015-07-29 13:16:09] PHRETS.DEBUG: Response: HTTP 200 [] [] 

Вывод на экран (результат var_dump)

array(20) { 
[0]=> 
object(PHRETS\Models\Object)#32 (10) { 
    ["content_type":protected]=> 
    string(8) "text/xml" 
    ["content_id":protected]=> 
    string(4) "null" 
    ["object_id":protected]=> 
    string(4) "null" 
    ["mime_version":protected]=> 
    NULL 
    ["location":protected]=> 
    NULL 
    ["content_description":protected]=> 
    NULL 
    ["content_sub_description":protected]=> 
    NULL 
    ["content":protected]=> 
    string(192) "<?xml version="1.0" standalone="no"?> 
<!DOCTYPE RETS SYSTEM "RETS-20041001.dtd"> 
<RETS ReplyCode="20403" ReplyText="No Object Found: No matching object was found to satisfy the request."/>" 
    ["preferred":protected]=> 
    NULL 
    ["error":protected]=> 
    object(PHRETS\Models\RETSError)#45 (2) { 
    ["code":protected]=> 
    int(20403) 
    ["message":protected]=> 
    string(69) "No Object Found: No matching object was found to satisfy the request." 
    } 
} 
[1]=> ... 
+0

Лучшее, что вы можете сделать, это поговорить с вашим MLS. Они должны быть в состоянии сказать вам, что именно не так с вашим запросом. Ответ сам по себе действителен, и все, что я думаю о PHPETS и RETS, я думаю. Без дальнейших знаний о специфике Торонто MLS невозможно будет сказать, что здесь не так. –

+0

Как вы определяете, является ли ** N3273704 ** допустимым типом объекта для _Photo_? Существует несколько способов поиска/получения идентификаторов объектов. –

+0

@dj_goku, ** N3273704 ** - идентификатор объекта. Поскольку документированный (https://github.com/troydavisson/PHRETS) тип объекта является вторым параметром (Фото), а идентификатор объекта является третьим параметром. – user2364656

ответ

1

я смог выяснить этот вопрос, и я пишу это в надежде, что это спасает чью-то время.

После мониторинга HTTP-трафика и сравнения исходных заголовков, отправленных из соединителя PHRETS и RETS, в приложении Windows оказалось, что некоторые серверы RETS (в данном случае, Real Real Board) требуют, чтобы поле «Принять» присутствовало в заголовок. Таким образом, проблема решена, добавив следующую строку в конструктор класса Session:

'Accept' => '*/*', 
+0

Вы уверены, что в этом проблема? Я использую TREB-сервер, и у меня такая же проблема, но в классе Session уже есть это. Я могу получить все свойства, но я получаю объект ошибки, когда запускаю '$ rets-> GetObject (« Свойство »,« Фото »,« N3273704 »,« * », 0);'. –

0

Я хотел внести свой вклад одну ноты ... TREB имеет KeyField неправильно настроен. Они используют версию идентификатора свойства DBName (ml_num), тогда как KeyField должен быть версией SystemName этого поля (Ml_num) .... просто вопрос разницы в случае, но достаточно, чтобы быть изменением для клиентов RETS, которые автоматически получат KeyField из метаданных RETS.

 Смежные вопросы

  • Нет связанных вопросов^_^