Pesquisar na Comunidade
Mostrando resultados para as tags ''http''.
Encontrado 8 registros
-
Estou tentando há dias fazer uma requisição de preço e prazo de entrega para o WS dos Correios. Acontece que o meu php não executa de jeito nenhum a requisição, e o pior é que se eu abrir a URL diretamente no navegador, o XML aparece normalmente, e não sei porque motivo o php não consegue "puxar" esse mesmo xml. Vou colocar o código caso alguém queira testar ou verificar se estou fazendo algo errado: Correios.php <?php class Correios { public $nCdEmpresa, $sDsSenha, $servico, $cepOrigem, $cepDestino, $peso, $formato = '1', $comprimento, $altura, $largura, $diametro, $maoPropria = 'N', $valordeclarado = '0', $avisoRecebimento = 'N', $retorno = 'xml'; public function calc() { $cURL = curl_init(sprintf( 'ws.correios.com.br/calculador/CalcPrecoPrazo.asmx/CalcPrecoPrazo?nCdEmpresa=%s&sDsSenha=%s&nCdServico=%s&sCepOrigem=%s&sCepDestino=%s&nVlPeso=%s &nCdFormato=%s&nVlComprimento=%s&nVlAltura=%s&nVlLargura=%s&nVlDiametro=%s&sCdMaoPropria=%s&nVlValorDeclarado=%s &sCdAvisoRecebimento=%s&StrRetorno=%s HTTP/1.1', $this->nCdEmpresa, $this->sDsSenha, $this->servico, $this->cepOrigem, $this->cepDestino, $this->peso, $this->formato, $this->comprimento, $this->altura, $this->largura, $this->diametro, $this->maoPropria, $this->valordeclarado, $this->avisoRecebimento, $this->retorno )); // Define a opção que diz que você quer receber o resultado encontrado curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true); // Executa a consulta, conectando-se ao site e salvando o resultado na variável $string $string = curl_exec($cURL); // Encerra a conexão com o site curl_close($cURL); $xml = simplexml_load_string($string); if ($xml->Erro != '') { $this->error = array($xml->cServico->Erro, $xml->cServico->MgsErrro); return false; } else { return $xml; } } public function error() { if (is_null($this->error)) { return false; } else { return $this->error; } } } Agora o Script que estou chamando para testar a requisição e não funciona: $frete = new Correios(); $frete->servico = "04510"; // 04510 para PAC e 04014 para SEDEX $frete->cepOrigem = "82220020"; $frete->cepDestino = "08090284"; $frete->peso = "0.5"; $frete->comprimento = "50"; $frete->altura = "5"; $frete->largura = "20"; $frete->diametro = "0"; $calc = $frete->calc(); if (!$calc) { $error = $frete->error(); echo $error[1]; } else { var_dump($calc); } Já habilitei o curl no php.ini e testei em uma hospedagem, continua não me retornando nada
-
Nunca fiz requisição http antes mas queria participar do desafio da codenation, o desafio era solicitar pra essa api um json e criar um algoritmo pra decifrar a encriptação desse texto numa variavel dentro do json e depois enviar de volta. O algoritmo ta certo mas eu não sei se o meu codigo foi enviado. Eu abri o terminal e dei um php nome-do-arquivo.php Eis o codigo: <?php $token ="token"; $url_receive = "https://api.codenation.dev/v1/challenge/dev-ps/generate-data?token=".$token; $ch = curl_init(); $opts = [ CURLOPT_URL => $url_receive, CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER=> false ]; curl_setopt_array($ch, $opts); $response = curl_exec($ch); $answer = fopen("answer.json", "wr"); fwrite($answer,$response); fclose($answer); $json = json_decode($response, true); $text = $json['cifrado']; $text = str_split($text); $offset = $json['numero_casas']; $tot = count($text); $finaltext = ""; for($i = 0; $i<$tot ;$i++) { if(ord($text[$i]) >= 97 && ord($text[$i]) <= 122) { $finalchar = ord($text[$i]) + $offset; while($finalchar > 122) { $finalchar -= 26; } $finaltext .= chr($finalchar); } else{ $finaltext .= $text[$i]; } } $json['decifrado'] = $finaltext; $json['resumo_criptografico'] = sha1($finaltext); $answer = fopen("answer.json", "wr"); fwrite($answer,json_encode($json)); fclose($answer); $url_send = "https://api.codenation.dev/v1/challenge/dev-ps/submit-solution?token=".$token; $file = new CURLFile ("answer.json","application/json","answer"); $data = array('file' => $file); $ci = curl_init(); $opt = [ CURLOPT_URL => $url_send, CURLOPT_POST => 1, CURLOPT_HTTPHEADER => ["content-Type:multipart/form-data"], CURLOPT_POSTFIELDS => $data, CURLOPT_RETURNTRANSFER => true, ]; curl_setopt_array($ci, $opt); $response = curl_exec($ci); curl_close($ci); curl_close($ch) Obviamente eu alterei o token pra postar aq. alguém pode me dizer no que q eu errei?
-
Boa tarde pessoal! Eu estou desenvolvendo uma solução pra um projeto em Arduino ESP8266. Neste projeto preciso fazer um POST HTTP pra me comunicar com a api do Dropbox e fazer upload de arquivos! A questão é que não entendo muito de POST. (Se alguém tiver algo explicativo agradeço!) Na documentação do Dropbox não consigo me guiar bem. Preciso saber o código raiz (raw) que será enviado pra o servidor pra eu conseguir enviar. Ainda não consegui êxito nas tentativas. O que me deixa mais confuso é o código do Dropbox que estão em CURL. Que nunca tive contato. Mas usa POST. Ainda é um pouco confuso pra mim... A documentação: https://www.dropbox.com/developers/documentation/http/documentation Estou tantando fazer o POST assim: POST /2/auth/token/from_oauth1 HTTP/1.1 Host: api.dropboxapi.com Content-Type: application/x-www-form-urlencoded Content-Length: xx curl -X POST https://api.dropboxapi.com/2/auth/token/from_oauth1 \ --header "Authorization: Basic <MY CODE>" \ --header "Content-Type: application/json" \ --data "{\"oauth1_token\": \"qievr8hamyg6ndck\",\"oauth1_token_secret\": \"qomoftv0472git7\"}" Resposta: HTTP/1.1 400 Bad Request Server: nginx Date: Mon, 23 Apr 2018 04:04:30 GMT Content-Type: text/html Content-Length: 264 Connection: close X-Frame-Options: DENY Content-Security-Policy: sandbox; frame-ancestors 'none' X-Content-Type-Options: nosniff Content-Disposition: attachment; filename='error' Não tive sucesso ainda. Deve me faltar conhecimento sobre POST ou CURL. Podem me ajudar?? obrigado!!!
-
Estou tentando ler arquivos mp4 com o PHP, meu código inicial era $file = 'https://s3-sa-east-1.amazonaws.com/onlytestes/video.mp4'; header('Content-type: video/mp4'); readfile($file); Mas dessa forma não dava pra navegar na barra de duração do vídeo, pular e nem mesmo voltar, até que o vídeo esteja 100% carregado. Claro que quando leio diretamente o arquivo (video.mp4) tudo ocorre bem. Resolvi este problema com o seguinte código $request = 'video.mp4'; $file = $request; $fp = @fopen($file, 'rb'); $size = filesize($file); // File size $length = $size; // Content length $start = 0; // Start byte $end = $size - 1; // End byte header('Content-type: video/mp4'); header("Accept-Ranges: 0-$length"); if (isset($_SERVER['HTTP_RANGE'])) { $c_start = $start; $c_end = $end; list(, $range) = explode('=', $_SERVER['HTTP_RANGE'], 2); if (strpos($range, ',') !== false) { header('HTTP/1.1 416 Requested Range Not Satisfiable'); header("Content-Range: bytes $start-$end/$size"); exit; } if ($range == '-') { $c_start = $size - substr($range, 1); }else{ $range = explode('-', $range); $c_start = $range[0]; $c_end = (isset($range[1]) && is_numeric($range[1])) ? $range[1] : $size; } $c_end = ($c_end > $end) ? $end : $c_end; if ($c_start > $c_end || $c_start > $size - 1 || $c_end >= $size) { header('HTTP/1.1 416 Requested Range Not Satisfiable'); header("Content-Range: bytes $start-$end/$size"); exit; } $start = $c_start; $end = $c_end; $length = $end - $start + 1; fseek($fp, $start); header('HTTP/1.1 206 Partial Content'); } header("Content-Range: bytes $start-$end/$size"); header("Content-Length: ".$length); $buffer = 1024 * 8; while(!feof($fp) && ($p = ftell($fp)) <= $end) { if ($p + $buffer > $end) { $buffer = $end - $p + 1; } set_time_limit(0); echo fread($fp, $buffer); flush(); } fclose($fp); exit(); porém, só da certo com arquivos local, acho que o HTTP_RANGE não funciona, retorna o seguinte erro no console Failed to load resource: the server responded with a status of 416 (Requested Range Not Satisfiable) eu preciso ler vídeos da Amazon S3, exemplo: https://s3-sa-east-1.amazonaws.com/onlytestes/video.mp4 alguém tem alguma ideia?
-
Estou tentando fazer um wrapper para a API olho vivo, da SPtrans http://www.sptrans.com.br/desenvolvedores/APIOlhoVivo/Documentacao.aspx?1#docApi-autenticacao Estou usando a biblioteca apache commons para fazer as requisições POST. Por algum motivo estou recebendo Error 404, No HTTP resource was found that matches the request URI 'http://api.olhovivo.sptrans.com.br/v0/Login/Autenticar'. Pensei que talvez a API não estivesse funcionando, mas achei esse wrapper em python https://gist.github.com/jonathansp/7491340 e testei ele com a minha chave de liberação e tudo funcionou. Essa é a função que executa o POST. public static String executePost() { CloseableHttpClient client = HttpClientBuilder.create().build(); String targetURL = "http://api.olhovivo.sptrans.com.br/v0/Login/Autenticar"; List<NameValuePair> urlParameters = new ArrayList<>(); urlParameters.add(new BasicNameValuePair("token","3de5ce998806e0c0750b1434e17454b6490ccf0a595f3884795da34460a7e7b3")); try { HttpPost post = new HttpPost(targetURL); post.setEntity(new UrlEncodedFormEntity(urlParameters)); HttpResponse response = client.execute(post); System.out.println("Response Code : " + response.getStatusLine().getStatusCode()); BufferedReader rd = new BufferedReader( new InputStreamReader(response.getEntity().getContent())); StringBuffer result = new StringBuffer(); String line = ""; while ((line = rd.readLine()) != null) result.append(line); System.out.println(result.toString()); return result.toString(); } catch (Exception e) { e.printStackTrace(); return null; } } Isso é o que é printado: Response Code : 404 {"Message":"No HTTP resource was found that matches the request URI 'http://api.olhovivo.sptrans.com.br/v0/Login/Autenticar'."}
-
Estou tentando fazer um wrapper para a API olho vivo, da SPtrans http://www.sptrans.com.br/desenvolvedores/APIOlhoVivo/Documentacao.aspx?1#docApi-autenticacao Estou usando a biblioteca apache commons para fazer as requisições POST. Por algum motivo estou recebendo Error 404, No HTTP resource was found that matches the request URI 'http://api.olhovivo.sptrans.com.br/v0/Login/Autenticar'. Pensei que talvez a API não estivesse funcionando, mas achei esse wrapper em python https://gist.github.com/jonathansp/7491340 e testei ele com a minha chave de liberação e tudo funcionou. Essa é a função que executa o POST. public static String executePost() { CloseableHttpClient client = HttpClientBuilder.create().build(); String targetURL = "http://api.olhovivo.sptrans.com.br/v0/Login/Autenticar"; List<NameValuePair> urlParameters = new ArrayList<>(); urlParameters.add(new BasicNameValuePair("token","3de5ce998806e0c0750b1434e17454b6490ccf0a595f3884795da34460a7e7b3")); try { HttpPost post = new HttpPost(targetURL); post.setEntity(new UrlEncodedFormEntity(urlParameters)); HttpResponse response = client.execute(post); System.out.println("Response Code : " + response.getStatusLine().getStatusCode()); BufferedReader rd = new BufferedReader( new InputStreamReader(response.getEntity().getContent())); StringBuffer result = new StringBuffer(); String line = ""; while ((line = rd.readLine()) != null) result.append(line); System.out.println(result.toString()); return result.toString(); } catch (Exception e) { e.printStackTrace(); return null; } } Isso é o que é printado: Response Code : 404 {"Message":"No HTTP resource was found that matches the request URI 'http://api.olhovivo.sptrans.com.br/v0/Login/Autenticar'."}