Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou utilizando Zend + Doctrine para fazer um WebService, e para isso estou utilizando o Zend_Xmlrpc, tudo esta funcionando perfeitamente, até eu chegar em uma resposta grande demais para o zend processar. um array com apenas 9 registros....
Ou seja se a resposta possuir mais de 9 registro a resposta vem em branco e da erro no lado cliente.
Existe alguma forma de aumetar esse tamanho de resposta?
Acredito que o problema seja do lado do Server,
$server = new Zend_XmlRpc_Server();
$server->setClass('Api_Xml');
echo $server->handle();
no lado client estou usando,
echo "<pre>";
$client = new Zend_XmlRpc_Client("http://address.me/api/1.0/xmlrpc.php");
$client->getHttpClient()->setConfig(array('timeout'=>30));
$filter[] = array('city_id'=>"63bbac31-b5ea-4668-b315-00e40f13f49b");
try{
var_dump( $client->call("neighborhood",$filter));
}catch (Exception $e){
echo $client->getLastRequest();
echo $client->getLastResponse();
}
Existem alguma configuração adicional?
Ahh para o método em questão o código é
/**
*
* Retorna a lista de bairros
* @param struct
* @returns struct
*/
public function neighborhood($filters){
$response = array();
if(count($filters) == 0){
$response['error'] = "Must have at least one filter.";
}else{
$qry = Doctrine_Query::create()->from("Neighborhood n");
foreach ($filters as $f=>$value){
$qry->addWhere($f. " = ?", $value);
}
$test = $qry->limit(9)->fetchArray();
foreach($test as $key => $value){
$response[] = $value;
}
return $test;
}
}
Como dito, se eu retirar o limit da query, simplismente irá retornar vazia a resposta, mesmo que haja dados.
Alguem tem alguma idéia de porque isso está ocorrendo?
Obrigado
Pequeno descuido meu, foi em uma das várias alterações para testes /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/biggrin.gif&key=cb0fdb2382312b39ddcb15831fcae62157015f17d2417528782628663387e929" alt="biggrin.gif" />
Eu identifiquei o problema, acontece que o problema está localizado em um acento em uma das palavras vindas do banco, Mesmo setando encoding de resposta o problema persiste,
Tudo absolutamente tudo esta como utf-8 bootstrap, doctrine, webservice, files tudo está como utf-8 não faço idéia do que falta oO
Alguma luz?
Vlw por notar o pequeno deslize ali /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/tongue.gif&key=8d11c3c7c03c7a5a294e250694d100848a0423dc34ef2af8d774f49d1b969fde" alt="tongue.gif" />
O banco está usando qual collation? Nunca usei o Doctrine, mas no ZF defino o charset assim (application.ini):
;; para o banco de dados
resources.db.params.charset = "utf8"
;; para a view
resources.view.encoding = "UTF-8"
resources.view.charset = "UTF-8"
Além disto, salvo todos os arquivos em UTF-8 e crio as tabelas do banco de dados como utf8_general_ci. Os dados foram gravados diretamente no banco ou foram gravados pela aplicação?
Carlos Eduardo
Caraca. esqueci de posta aqui, sim eu tomei esses cuidado, O doctrine pede para setar o encoding padrão e tudo dentro dele gira no encoding escolhido, e na minha IDE ( eclipse ) esta como padrão utf-8, e portanto tudo esta rolando em utf-8, o problema era mais básico que isso.... o Doctrine para setar o encoding não é "utf-8" mas sim "utf8" e eu acabei seguindo o padrão do zend, ou seja utilizei "utf-8".... Então doctrine estava me trazendo as informações em ISO /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/wink.gif&key=0566fd943552bcff9cb1b879403ca34b5ff8f67befaac7fe4648006e9f764689" alt="wink.gif" />
Burrada minha....
Mas segue de aviso aos próximos... quando da problema de encoding com o Zend_Xmlrpc ele retorna resultado.... NULO, mas um xml válido.... e por isso ele não conseguia converter para o formato que eu esperava um array...
NULL != Array
E quando chegava a resposta dizia que o formato estava incorreto.
Sendo que não havia nenhuma resposta /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/tongue.gif&key=8d11c3c7c03c7a5a294e250694d100848a0423dc34ef2af8d774f49d1b969fde" alt="tongue.gif" />
Obrigado pela atenção....
Não sei te dizer o porque, mas posso te dizer que isto aqui está estranho.
Você adiciona em $response mas retorna $test... Acho que tem alguma coisa errada aí, não?
Carlos Eduardo