Autor | Zpráva | ||
---|---|---|---|
d-key Profil |
#1 · Zasláno: 7. 9. 2012, 09:14:12
Ahoj,
mám problém s importem fotografií na sreality a zasekl jsem se na něm už docela dlouho, takže bych uvítal, jestli mi někdo může pomoci. Nabídky normálně importuji na sreality, a poté chci k inzerátu přidat fotky, které mám na serveru nahrané, ale pořád mi to háže chybu, že neposílám data v binary formátu. Mám to řešeno způsobem: $img=file_get_contents($url); $files["data"] = base64_encode($img); - to mi vypíše, že to není binary formát (i v případě, že ještě provedu $files["data"] = new XML_RPC_Value($files["data"], 'base64');) Ještě jsem zkoušel druhý způsob, kde jsem jsem vynechal prostřední krok a udělal pouze: $img=file_get_contents($url); [pre] $files["data"] = new XML_RPC_Value($img, 'base64'); Což mi vyhodí chybu: Parser error:< Invalid character > Pokud mi s tím někdo můžete poradit, tak bych byl vděčný. |
||
Jan Tvrdík Profil |
#2 · Zasláno: 9. 9. 2012, 08:40:37
d-key:
Předkládám, že se jedná o import dle specifikace https://admin.sreality.cz/doc/import.pdf. Konkrétně o část 2.7.1 addProjectPhoto. „to mi vypíše, že to není binary formát“ Kdo ti to vypíše? A co přesně ti napíše? Dle specifikace žádná taková chyba neexistuje. Co přesně ti to vrátí, když použiješ $img = file_get_contents($url); $files['data'] = new XML_RPC_Value(base64_encode($img), 'base64'); |
||
d-key Profil |
#3 · Zasláno: 10. 9. 2012, 08:28:24
Jan Tvrdík:
Jedná se pouze o addPhoto, což je víceméně stejný princip. Tato část kódu: $img = file_get_contents($url); $files['data'] = new XML_RPC_Value(base64_encode($img), 'base64'); mi nevrátí nic, ale poté předávám pole $files, kde jsou ještě další hodnoty, do message: $msg = $this->sendMsg('addPhoto',$newSessionId,$advert_id,"",$files); A poté, co ji odešlu $response = $client->send($msg); , tak mi to vrátí tu chybu 452: "Attribute 'data' must be binary" |
||
Jan Tvrdík Profil |
#4 · Zasláno: 10. 9. 2012, 09:47:07
d-key:
Kód 452 je v dokumentaci popsaný jako „Nejsou vyplneny vsechny povinne polozky nebo jsou spatneho typu“. Zkontroluj, že jsi vyplnil všechny povinné položky. Konkrétně mi není jasné, proč nemáš vyplněné advert_rkid , přestože dokumentace praví (v kapitole 1.6) „advert_rkid předávám vždy naplněné.“, ač si nejsem jist, zda se to na to vztahuje.
Na fotku dle dokumentace jsou následující požadavky: • min. rozlišení 480x360 • max. velikost 500kB • formát jpg, gif nebo png Pokud to nepomůže, zkus kontaktovat podporu srealit. |
||
d-key Profil |
#5 · Zasláno: 10. 9. 2012, 11:41:44
Jan Tvrdík:
Přidávám zde celou část kódu: (myslím, že to advert_rkid na to nemělo vliv, i když jsem to radši předělal) $handle = fopen($url, "rb"); $contents = fread($handle, filesize($url)); $data =array( 'data' => new XML_RPC_Value($contents, 'base64'), 'main' => new XML_RPC_Value(1, 'int'), 'alt' => new XML_RPC_Value("fotka", 'string'), 'photo_rkid' => new XML_RPC_Value("100001", 'string') ); $msg = $this->sendMsg('addPhoto',$newSessionId,$advert_id,$id,$data); $response = $client->send($msg); Zkoušel jsem tam dát různé obrázky, u některých, které stále splňují podmínky vstupu mi to navíc vypíše: Notice: fputs() [function.fputs]: send of 8192 bytes failed with errno=10053 Software v hostitelsk�m po��ta�i ukon�il vytvo�en� p�ipojen�. in C:\Program Files\EasyPHP5.2.10\www\real-smart\admin\xml\RPC.php on line 968 (spíše u větších obrázků). Nicméně výsledná chyba je teď: XML_RPC_Response Object ( [xv] => [fn] => 2 [fs] => Invalid return payload: enable debugging to examine incoming payload [hdrs] => ) Na podporu srealit jsem psal, ale zatím se mi bohužel neozvali, tak jsem zkusil, jestli mi neproadí někdo tady. |
||
Jan Tvrdík Profil |
d-key:
„enable debugging to examine incoming payload“ Doplň tam: $client->setdebug(1); „Přidávám zde celou část kódu“ Někde se tam vytratilo volání base64_encode. |
||
d-key Profil |
Jan Tvrdík:
To base64_encode jsem tam teď vynechal, protože v kódu Vojtěcha Dohnala, co jsem našel na http://dohnal.files.wordpress.com/2011/10/sreality_export.pdf , to vůbec není. Zkoušel jsem už několik různých řešení (některá byla s base64_encode, některá bez toho). jinak ten setdebug(1) jsem nastavil (už jsem to zkoušel i předtím), ale vůbec nevím, co z toho mám vyčíst... V případě, že tam vrátím to base64_encode, tak mi to vypisuje tu chybu, že data nejsou binary. |
||
Jan Tvrdík Profil |
#8 · Zasláno: 10. 9. 2012, 12:09:24
d-key:
Máš pravdu, to volání base64_encode by tam patřilo, kdybys jako druhý parametr konstruktoru XML_RPC_Value uvedl string . Když uvedeš base64 , tak to tu funkci zavolá za tebe.
„ten setdebug(1) jsem nastavil (…), ale vůbec nevím, co z toho mám vyčíst“ Já taky ne, ale zkusil bych vypsat faultCode , faultString a value .
|
||
d-key Profil |
#9 · Zasláno: 10. 9. 2012, 12:38:43
Jan Tvrdík:
Bohužel žádné chybové proměnné se mi nevytvoří. Když si dám print_r (response), tak mi to pouze vypíše: XML_RPC_Response Object ( [xv] => [fn] => 2 [fs] => Invalid return payload: enable debugging to examine incoming payload [hdrs] => ) Přemýšlel jsem ještě, jestli nemůžu mít nějakou blbou verzi toho XML RPC, což mi ale připadá jako blbost...přece jen mi třeba vkládání nabídek na sreality funguje. Má to jen problém s tou fotkou, se kterou se patlám už týden. Celkově docela v tom xml tápu, ale myslel jsem, že po rozchození fukce addAdvert, kde jsem se taky zasekl, už mě žádný problém nečeká...a nic :D...myslím, že po vyřešení importu fotek tam snad už nic horšího být nemůže. |
||
Jan Tvrdík Profil |
#10 · Zasláno: 10. 9. 2012, 13:10:23
d-key:
var_dump(XML_RPC_decode($response->value()); |
||
d-key Profil |
#11 · Zasláno: 10. 9. 2012, 13:18:56
Jan Tvrdík:
Na to mi to vypíše fatal error: Fatal error: Call to a member function kindOf() on a non-object in C:\Program Files\EasyPHP5.2.10\www\real-smart\admin\xml\RPC.php on line 1948 |
||
Jan Tvrdík Profil |
#12 · Zasláno: 10. 9. 2012, 14:13:56
d-key:
Ty voláš někde metodu kindOf() ? A co je ten „non-object“?
|
||
d-key Profil |
#13 · Zasláno: 10. 9. 2012, 14:16:05
Jan Tvrdík:
Co jsem pochopil, tak se metoda kindOf volá někde v rámci XML_RPC_decode...já osobně ji nikde nevolám |
||
d-key Profil |
#14 · Zasláno: 11. 9. 2012, 08:28:32
Jan Tvrdík:
Teď jsem to hodil na hosting a vypisuje to úplně jinou chybu: XML_RPC_Response Object ( [xv] => [fn] => -503 [fs] => Parser error:< Invalid character > [hdrs] => Array ( [0] => HTTP/1.1 200 OK [1] => Content-Type: text/xml [2] => Accept: text/xml, application/x-www-form-urlencoded, application/x-base64-frpc, application/x-frpc [3] => Connection: keep-alive [4] => Content-Length: 298 [5] => Server: Fast-RPC Server Linux ) ) |
||
d-key Profil |
Jan Tvrdík:
Tak se mi to nakonec podařilo vyřešit tak, že jsem to předělal do této podoby: $data =array( 'data' => new XML_RPC_Value($contents,'base64'), 'main' => new XML_RPC_Value($files["main"],'int') ); $params = array(new XML_RPC_Value($newSessionId,'string'),new XML_RPC_VALUE($advert_id,'int'),new XML_RPC_VALUE("",'string'),new XML_RPC_VALUE($data,'struct')); $msg = new XML_RPC_Message("addPhoto", $params); //print_r($msg); $response = $client->send($msg); Už to konečně jede...i tak ale díky za ochotu pomoct |
||
Časová prodleva: 12 let
|
0