Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal será que vcs podem me ajudar a resolver esse problema?
Vejam esse código:
<?
$busca = curl("http://search.4shared.com/network/searchXml.jsp?&sortOrder=1&searchmode=3&searchExtention=mp3&q=axé;
echo $busca;
?>
$busca retorna o seguinte erro:
HTTP/1.0 400 Bad request Cache-Control: no-cache Connection: close Content-Type: text/html
400 Bad request
Your browser sent an invalid request.
Mas se eu abrir direto no navegador abre normal, e se eu tirar o acento do axé o erro some e a url funciona com o curl.
Opa sim está faltando porque cortei o código para simplificar a dúvida, mas tem sim as aspas e o parenteses.
Estou usando uma função curl, veja:
<?php
function curl($a,$b,$c,$d,$e){
$ch = curl_init();
curl_setopt_array($ch,
array(
CURLOPT_URL => $a,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_COOKIE => $b,
CURLOPT_HEADER => $c,
CURLOPT_NOBODY => $e,
CURLOPT_CUSTOMREQUEST => ($d)?"POST":"GET",
CURLOPT_POSTFIELDS => $d
)
);
$ex = curl_exec($ch);
return $ex;
curl_close($ch);
}
?>O código correto é assim:
$bk = str_replace("+","%20",$_REQUEST['search']);
$bk = str_replace(" ","%20",$_REQUEST['search']);
// echo $bk;
$busca = curl("http://search.4shared.com/network/searchXml.jsp?&sortOrder=1&searchmode=3&searchExtention=mp3&q=".$bk,null,true,null,false);
echo $busca;
Se buscarmos "axé" da erro bad request, se buscarmos "axe" sem acento funciona norma. O echo $bk coloquei para teste mostra exatamente o termo pesquisado, ou seja se eu pesquisa "axé" vai mostrar exatamente "axé".Pessoal resolvi o problema assim:
Trocando:
$bk = str_replace(" ","%20",$_REQUEST['search']);
Por:
$bk = urlencode(str_replace(" ","%20",$_REQUEST['search']));
Antes de tudo, faltando um parêntese ")" e uma aspa.
O que você quer fazer viar cURL? Explique a sua dúvida.