Jump to content
Nioshi

[Resolvido] $_post recebe variável nula do c#

Recommended Posts

Boa tarde, estou enfrentando um problema em meu código, eu tenho um código em c# que fica ouvindo a porta 12934, quando recebe requisição ele envia um post ao meu arquivo php, o problema está que o $_POST recebe valor nulo por algum motivo que ainda não descobri.

 

código no c#:

string URLreceber = "http://localhost/pweb/modulose";
string URLRetornoimg = "http://localhost/pweb/modulos";
string URLRetornocam = "http://localhost/pweb/moduloscaminho";

using (var cliente = new WebClient())
                {
                    NameValueCollection modulose = new NameValueCollection();
                    modulose["folha"] = folha;
                    modulose["informe"] = informe;
                    modulose["cartao"] = cartao;
                    Console.WriteLine(modulose["folha"]);
                    Console.ReadKey();

                    resultimg = cliente.UploadValues(URLRetornoimg, modulose);
                    retorno = Encoding.UTF8.GetString(resultimg);
                    Console.WriteLine(retorno);
                    Console.ReadKey();
                }

código em php:

$app->post('/modulos', function (Request $request) use ($app) {
	$modFolha = '';
	$modInforme = '';
	$modCartao = '';
		if(isset($_POST['folha'])){
			$modFolha = $_POST['folha'];	
		}
		if(isset($_POST['informe'])){
			$modFolha = $_POST['informe'];	
		}
		if(isset($_POST['cartao'])){
			$modFolha = $_POST['cartao'];	
		}

		if($modFolha == 'sim'){
			$modFolha = 'sim';
		}else{
			 $modFolha = 'nao';
		}
		if($modInforme == 'sim'){
			$modInforme = 'sim';
		}else{
			 $modInforme = 'nao';
		}
		if($modCartao == 'sim'){
			$modCartao = 'sim';
		}else{
			$modCartao = 'nao';
		}

	if($modFolha == 'sim'){
		$modulosImagem['folha'] = './images/holerite.png';
	}else{
		$modulosImagem['folha'] = './images/holeriteDesabilitado.png';
	}
	if($modInforme == 'sim'){
		$modulosImagem['informe'] = './images/informeVerde.png';
	}else{
		$modulosImagem['informe'] = './images/informeDesabilitado.png';
	}
	if($modCartao == 'sim'){
		$modulosImagem['cartao'] = './images/cartao.png';
	}else{
		$modulosImagem['cartao'] = './images/cartaoDesabilitado.png';
	}
	if(file_exists("../app/config/global.php")){
		return new Response(json_encode($modulosImagem), 201);
	}
	else{
		return new Response("Arquivo global não existe", 500);
	}
});

Código em .js

  // post para a rota que retorna os dados
  $http.post('./modulos', data, setting)
  .success(function (data, status, headers, setting){
    $scope.folha = angular.fromJson(data).folha;
	  $scope.informe = angular.fromJson(data).informe;
	  $scope.cartao = angular.fromJson(data).cartao;
  })
  .error(function (data, status, header, setting){
    $scope.ResponseDetails = "Erro: " + data ;
  });
  
  var setting = {
    headers : {
      'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'
    }
  }

com as linhas:

ini_set('display_errors', true);
error_reporting(E_ALL);

ele retorna:

http://prntscr.com/lhhpdu

 

e sem as linhas ele retorna NULL, alguém sabe dizer no que estou errando?

 

retorno no c#:

http://prntscr.com/lhhqba

 

variáveis pegas:

http://prntscr.com/lhhqr6

Share this post


Link to post
Share on other sites

Acredito que o dado esteja sendo recebido de forma bruta pelo APACHE/PHP, mas a variável $_POST não é populada.

 

Veja se com o seguinte código você não recupera o valor enviado:

$postdata = file_get_contents("php://input");
var_dump($postdata);

De qualquer forma, $_POST somente será populada se os dados forem:

  • application/x-www-form-urlencoded;
  • multipart/form-data-encoded.

No mais, ficam no input stream acima mencionado.

http://php.net/manual/en/wrappers.php.php#wrappers.php.input

Share this post


Link to post
Share on other sites

opa Gabriel, obrigado pelo retorno, eu coloquei o código que você sugeriu e retornou isso no navegador.

http://prntscr.com/lhi2nc

 

o que eu estou achando estranho, é que eu já fiz um código parecido e o $_POST pegou a variável vinda do c# normalmente:

 

código em c#: 

http://prntscr.com/lhi39n

código em php:

http://prntscr.com/lhi3wa

 

por isso não estou achando o motivo dele receber null

Share this post


Link to post
Share on other sites

Evite trazer os prints, traga os códigos/textos mesmo. Tem as opções de adicionar código e citações aqui no editor.

 

Como é possível visualizar no primeiro link, ele está no input stream.

Share this post


Link to post
Share on other sites
3 minutos atrás, Gabriel Heming disse:

Evite trazer os prints, traga os códigos/textos mesmo. Tem as opções de adicionar código e citações aqui no editor.

 

Como é possível visualizar no primeiro link, ele está no input stream.

ok, desculpe pelos prints.

 

isso quer dizer que a variável não está nula, e meu problema é outro?

Share this post


Link to post
Share on other sites
14 minutos atrás, Nioshi disse:

ok, desculpe pelos prints.

 

isso quer dizer que a variável não está nula, e meu problema é outro?

Ela está nula. Isso apenas quer dizer que os dados estão chegando no PHP.

 

É bem provável que o seu problema esteja aqui:

$http.post('./modulos', data, setting)

Deve validar se a variável data está no formato adequado para enviar ao PHP.

Share this post


Link to post
Share on other sites

descobri que seu setar manualmente desta forma a variável antes do if:

$modFolha = 'sim';

 

ele entra no if normalmente e envia a imagem correta ao .js.

Share this post


Link to post
Share on other sites
16 minutos atrás, Nioshi disse:

descobri que seu setar manualmente desta forma a variável antes do if

Sabe que isso não faz o menor sentido?

 

Se for analisar melhor seu código, o código abaixo não faz praticamente nenhum sentido:

$modFolha = '';
$modInforme = '';
$modCartao = '';
    if(isset($_POST['folha'])){
        $modFolha = $_POST['folha'];	
    }
    if(isset($_POST['informe'])){
        $modFolha = $_POST['informe'];	
    }
    if(isset($_POST['cartao'])){
        $modFolha = $_POST['cartao'];	
    }

    if($modFolha == 'sim'){
        $modFolha = 'sim';
    }else{
         $modFolha = 'nao';
    }
    if($modInforme == 'sim'){
        $modInforme = 'sim';
    }else{
         $modInforme = 'nao';
    }
    if($modCartao == 'sim'){
        $modCartao = 'sim';
    }else{
        $modCartao = 'nao';
    }

if($modFolha == 'sim'){
    $modulosImagem['folha'] = './images/holerite.png';
}else{
    $modulosImagem['folha'] = './images/holeriteDesabilitado.png';
}
if($modInforme == 'sim'){
    $modulosImagem['informe'] = './images/informeVerde.png';
}else{
    $modulosImagem['informe'] = './images/informeDesabilitado.png';
}
if($modCartao == 'sim'){
    $modulosImagem['cartao'] = './images/cartao.png';
}else{
    $modulosImagem['cartao'] = './images/cartaoDesabilitado.png';
}

Algumas variáveis (modInforme e $modCartao) nunca serão preenchidas. Uma delas ($modFolha) é preenchida para depois ser validada e preenchida com o mesmo valor.

 

Sobre o seu problema original, o que você deve fazer é validar a entrada dos dados no javascript, verificar se estão sendo enviados corretamente. Caso não resolver, pegue diretamente os valores do input stream php://input.

Share this post


Link to post
Share on other sites

boa tarde, apesar de eu ter começado meu programa c# do zero, eu só queria deixar registrado aqui que eu resolvi o meu problema com webserver no c#, e cURL no lado do PHP, no qual o c# envia minha informação para minha url "http://localhost:12934/mod/" e o cURL pega a informação dessa URL.

Abraço e obrigado pela ajuda.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By will_chido
      Bom dia a todos sou novo aqui encontrei um problema ao tentar realizar uma consulta em duas tabelas bd, para voltar resultado impresso na tela, ja tentei algumas formas li alguns tópicos mas sem sucesso tentei o uso de inner join talvez ou quase certo eu esteja fazendo errado se alguem puder me ajudar segue o pedaço do meu codigo, preciso incluir a pesquisa tambem na tabela ( categorias)
       
       <?php
                                  foreach ($vendas as $c) {
                                      echo '<tr>';
                                      echo '<td>' . $c->nomeCliente . '</td>';
                                      echo '<td>' . $c->valorTotal. '</td>';
                                      echo '<td>' . date('d/m/Y', strtotime($c->dataVenda)) . '</td>';
                                      echo '<td>' . $c->nome. '</td>';
                                      echo '</tr>';
                                  }
                                  ?>
    • By luigiferrari
      Boa noite, estou precisando de uma ajuda...
       
      Peguei um scrip de calendário e estou listando os dados em uma janela modal:

      O que eu gostaria de fazer é: colocar um botão para direcionar para um link onde o usuário poderá editar.
       
      Eu estou tentando várias vezes, já consegui que o botão aparecesse, porém ou aparece vários botões juntos(com todos os id cadastrados) ou aparece assim:

       
       
      Aqui estão os seguintes códigos:
       
       
      <script> $(document).ready(function() { $('#calendar').fullCalendar({ header: { left: 'prev,next today', center: 'title', right: 'month,agendaWeek,agendaDay' }, defaultDate: Date(), navLinks: true, // can click day/week names to navigate views editable: true, eventLimit: true, // allow "more" link when too many events eventClick: function(event) { $('#visualizar #id').text(event.id); $('#visualizar #title').text(event.title); $('#visualizar #start').text(event.start.format('DD/MM/YYYY')); $('#visualizar #Horario_saida').text(event.Horario_saida); $('#visualizar #Horario_retorno').text(event.Horario_retorno); $('#visualizar #Nome').text(event.Nome); $('#visualizar #Motorista').text(event.Motorista); $('#visualizar').modal('show'); return false; }, events: [ <?php while($row_events = mysqli_fetch_array($resultado_events)){ ?> { id: '<?php echo $row_events['id']; ?>', title: '<?php echo $row_events['title']; ?>', start: '<?php echo $row_events['start']; ?>', Horario_saida: '<?php echo $row_events['Horario_saida']; ?>', Horario_retorno: '<?php echo $row_events['Horario_retorno']; ?>', Nome: '<?php echo $row_events['Nome']; ?>', Motorista: '<?php echo $row_events['Motorista']; ?>', },<?php } ?> ] }); }); </script> <div class="row"> <div class="col-md-6"> <div class="panel panel-primary"> <div class="panel-heading"> <h3 class="panel-title painel-title-responsive">Calendário</h3> </div> <div class="panel-body"> <div id='calendar'></div> <div class="modal fade" id="visualizar" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" data-backdrop="static"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <h4 class="modal-title text-center">Dados do Evento</h4> </div> <div class="modal-body"> <dl class="dl-horizontal"> <dt>Id:</dt> <dd id="id"></dd> <dt>Nome:</dt> <dd id="Nome"></dd> <dt>Local:</dt> <dd id="title"></dd> <dt>Data:</dt> <dd id="start"></dd> <dt>Saida:</dt> <dd id="Horario_saida"></dd> <dt>Retorno:</dt> <dd id="Horario_retorno"></dd> <dt>Motorista:</dt> <dd id="Motorista"></dd> <div class="col-md-7"></div> <div class="col-md-5"> </dl> <a href="entrar.php?="id='id'">a</a> </div> </div> </div> </div> </div> O erro está na parte do "entrar.php="id='id'", mas não consigo fazer com que apareça apenas um botão com o id correto. Pensei em criar uma variável ou algo assim mas não deu muito certo.
      Poderiam me ajudar?
      Agradeço desde já!!!
    • By Marcosvn
      Estou trabalhando em um projeto de sites para escritores. Nesse projeto existem 12 gêneros dentro da tabela "categorias", por exemplo: Poemas, Acrósticos, Crônicas, etc.
       
      Estou com problemas para criar as rotas para os gêneros corretamente. Vamos supor que um usuário publique um texto do gênero Acrósticos com título: Flores do campo.
       
      A URL está sendo gerada assim: site.com/Acrósticos/flores-do-campo/
       
      Mas eu nao quero que as categorias venham com letra maiscula e acentos na url, fora em outras partes do site. Sendo assim, qual melhor método pra resolver essa situação ?
       
      Criar 12 rotas para cada categoria e puxar apenas o slug do titulo dinamicamente ? ou remover os acentos e letras maisculas na hora de gerar a URL ?
    • By vinihhylian0103
      Gostaria de fazer uma área do usuário que recolha os dados dele do banco de dados.
      form action -> login.php
      <meta charset="utf-8"> <?php session_start(); if(!$conect=mysqli_connect('localhost','root','','cadastros')) die ('erro ao conectar'); if (!empty($_POST) AND (empty($_POST['email']) OR empty($_POST['senha']))) { header("Location: index.html"); exit; } $email = $_POST['email']; $senha = $_POST['senha']; $sql = "SELECT * FROM usuarios WHERE email ='$email' AND senha = md5('$senha')"; $resultado = @mysqli_query($conect, $sql); $linhas = mysqli_num_rows($resultado); if($linhas==0) { function myAlert($msg, $url){ echo '<script language="javascript">alert("'.$msg.'");</script>'; echo "<script>document.location = '$url'</script>"; } myAlert("Email ou Senha incorretos! Verifique os dados inseridos!", "/teste_cad/Login/index.html"); } else{ $_SESSION["autenticado"]="rfc822_allowed"; $_SESSION["login"]=$email; header("Location: profile.php");} ?>
    • By mariana11
      Faça um algoritmo que:
      a) Leia uma frase de ate 80 caracteres, incluindo brancos;
      b) Conte quantos brancos existem na frase;
      c) Conte quantas vezes a letra `a` aparece;
      d) Caso algum caractere do alfabeto nao for inseridos, apresente quais são estes.   SE alguem poder ajudar desde ja agradeço
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.