none
O servidor remoto retornou um erro: (404) Não Localizado. RRS feed

  • Pergunta

  • public decimal CalculaSedex(string cepOrigem, string cepDestino, decimal peso, bool MaoPropria, bool avisoRecebimento, decimal valorDeclarado = 0.0m)
    {
    decimal functionReturnValue = default(decimal);
    //Cria uma requisição ao service dos correios, com os dados informados
            System.Net.WebRequest Req = System.Net.WebRequest.Create("http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx" + "cepOrigem=" + cepOrigem + "&cepDestino=" + cepDestino + "&peso=" + peso.ToString().Replace(",", ".") + "&resposta=xml");
    System.Net.WebResponAse Resp = Req.GetResponse();
    System.IO.StreamReader sr = new System.IO.StreamReader(Resp.GetResponseStream(), System.Text.Encoding.UTF7);
    System.Data.DataSet ds = new System.Data.DataSet();
    //Coloca os dados recebidos em um DataSet
    ds.ReadXml(sr);
    sr.Close();
    Resp.Close();
    if (Convert.ToInt16(ds.Tables["erro"].Rows[0]["codigo"].ToString()) != 0) {
    throw (new Exception(ds.Tables["erro"].Rows[0]["descricao"].ToString()));
    } else {
    functionReturnValue = (Convert.ToInt16(ds.Tables["Dados_Postais"].Rows[0]["preco_postal"].ToString().Replace(".", ",")));
    }
    return functionReturnValue;
    }

    protected void cmdCalcular_Click(object sender, EventArgs e)
    {
    try {
             decimal preco = CalculaSedex("27330680", (txtCEPDestino.Text), 1.23m, false, true, 120.5m);
    lblResultado.Text = "O valor do frete é " + string.Format(CultureInfo.GetCultureInfo("pt-BR"), "{0:C}", preco);
            }
            catch (Exception ex)
            {
                lblResultado.Text = ex.Message;

            }
            }

    compila e quando abre no servidor local ,quando clico no botão para buscar o cep e calcular aparece O servidor remoto retornou um erro: (404) Não Localizado.
    terça-feira, 25 de outubro de 2016 19:20

Todas as Respostas

  • "cepOrigem="  por "?cepOrigem=" 
    terça-feira, 25 de outubro de 2016 20:06
  • Cesar , foi de grande ajuda esse detalhe 

    a hora que chamo o cep aparece isso

    A marca de início 'p' na linha 115 posição 16 não corresponde à marca de fim de 'ul'. Linha 117, posição 17

    voce sabe me dizer?

    desde de já obrigado

    terça-feira, 25 de outubro de 2016 20:40
  • Aperta as teclas Ctrl+G e digita 115 e clica em ok e então copia o código e cola, o mesmo para 117.
    terça-feira, 25 de outubro de 2016 20:53
  • Fiz  e continua o mesma coisa , e criei um outro projeto e refiz , peguei a referencia dos correios e a mesma coisa 
    • Editado JonatasC terça-feira, 25 de outubro de 2016 21:16
    terça-feira, 25 de outubro de 2016 21:15
  • Não, isso era pra ir até a linha que está dando erro e você copiar o código e colar aqui para analisar!
    quarta-feira, 26 de outubro de 2016 12:47
  • segue o codigo completo o erro esta na linha  ref--115{
                    
                  Response.Redirect("Autenticar.aspx");
      -----> 115          }

    using System;
    using System.Collections.Generic;
    using System.Collections;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using LojaVirtual.DAO;
    using LojaVirtual.BLL;
    using System.Globalization;
    using System.Xml;

    namespace LojaVirtual.WEB
    {
        public partial class CarrinhoCompra : System.Web.UI.Page
        {
            int codProduto = 0;
            Carrinho car = new Carrinho();
            ProdutoBLL produtobll = new ProdutoBLL();

            protected void Page_Load(object sender, EventArgs e)
            {
                lblMsg.Visible = false;
                BuscarItens();
            }

            public void BuscarItens()
            {
                if (car.Itens.Count > 0)
                {

                    grvCarrinho.DataSource = car.Itens;
                    grvCarrinho.DataBind();
                    lblMsg.Visible = false;
                }
                else
                {
                    lblMsg.Text = "Não há itens no carrinho de compra.";
                    lblMsg.Visible = true;
                    grvCarrinho.DataBind();
                }
            }

            protected void grvCarrinho_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowType != DataControlRowType.Header && e.Row.RowType != DataControlRowType.Footer)
                {
                    codProduto = ((ITEM_VENDA)e.Row.DataItem).IDT_PRODUTO;
                    ProdutoBLL produtobll = new ProdutoBLL();

                    PRODUTO produto = produtobll.Find(p => p.IDT_PRODUTO == codProduto).First();

                    ((Label)e.Row.FindControl("lblDescricao")).Text = produto.NOME;
                }
                else if (e.Row.RowType == DataControlRowType.Footer)
                {
                    e.Row.Cells[1].Text = "Total de Itens Selecionados: " + car.QuantidadeTotal().ToString();
                    e.Row.Cells[4].Text = String.Format("{0:C}", car.ValorTotal());
                }
            }

            protected void grvCarrinho_RowDeleting(object sender, GridViewDeleteEventArgs e)
            {
                if (car.ExcluirItem(int.Parse(grvCarrinho.DataKeys[e.RowIndex].Value.ToString())))
                {
                    BuscarItens();
                    Master.AtualizarCarrinho();
                }
            }


            protected void btnPagar_Click(object sender, ImageClickEventArgs e)
            {
                if (Session["cliente"] != null)
                {
                    CLIENTE cliente = new CLIENTE();

                    cliente = (CLIENTE)Session["cliente"];

                    PRODUTO prd = null;

                    //Finaliza a venda do cliente
                    int idCodigoVenda = car.FinalizarVenda(cliente.IDT_CLIENTE, 5); //Este tipo de pagamento deve vir da tela.

                    VendaPagSeguro1.CodigoReferencia = idCodigoVenda.ToString();

                    VendaPagSeguro1.Produtos = new List<UOL.PagSeguro.Produto>();

                    foreach (ITEM_VENDA item in car.Itens)
                    {
                        UOL.PagSeguro.Produto produto = new UOL.PagSeguro.Produto();
                        produto.Codigo = item.IDT_PRODUTO.ToString();

                        prd = new PRODUTO();
                        prd = produtobll.BuscarProduto(item.IDT_PRODUTO);
                        produto.Descricao = prd.NOME;

                        produto.Quantidade = item.QUANTIDADE;
                        produto.Valor = double.Parse(item.VALOR_UNITARIO.ToString());

                        VendaPagSeguro1.Produtos.Add(produto);


                    }

                    prd = null;

                    VendaPagSeguro1.Cliente = new UOL.PagSeguro.Cliente();
                    VendaPagSeguro1.Cliente.Nome = cliente.NOME;
                    VendaPagSeguro1.Executar(this.Response);
                }
                else
                {
                    
                  Response.Redirect("Autenticar.aspx");
                }
            }
            public decimal CalculaSedex(string cepOrigem, string cepDestino, decimal peso, bool MaoPropria, bool avisoRecebimento, decimal valorDeclarado = 0.0m)
    {
    decimal functionReturnValue = default(decimal);
    //Cria uma requisição ao service dos correios, com os dados informados
            System.Net.WebRequest Req = System.Net.WebRequest.Create("http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx" + "?cepOrigem=" + cepOrigem + "&cepDestino=" + cepDestino + "&peso=" + peso.ToString().Replace(",", ".") + "&resposta=xml");
    System.Net.WebResponse Resp = Req.GetResponse();
    System.IO.StreamReader sr = new System.IO.StreamReader(Resp.GetResponseStream(), System.Text.Encoding.UTF7);
    System.Data.DataSet ds = new System.Data.DataSet();
    //Coloca os dados recebidos em um DataSet
    ds.ReadXml(sr);
    sr.Close();
    Resp.Close();
    if (Convert.ToInt16(ds.Tables["erro"].Rows[0]["codigo"].ToString()) != 0) {
    throw (new Exception(ds.Tables["erro"].Rows[0]["descricao"].ToString()));
    } else {
    functionReturnValue = (Convert.ToInt16(ds.Tables["Dados_Postais"].Rows[0]["preco_postal"].ToString().Replace(".", ",")));
    }
    return functionReturnValue;
    }

    public void cmdCalcular_Click(object sender, EventArgs e)
    {
    try {
            decimal preco = CalculaSedex("27330680", (txtCEPDestino.Text), 1.23m, false, true, 120.5m);
       lblResultado.Text = "O valor do frete é " + string.Format(CultureInfo.GetCultureInfo("pt-BR"), "{0:C}", preco);
            }
            catch (Exception ex)
            {
                lblResultado.Text = ex.Message;
               
                }
              }
            }
        }

    quarta-feira, 26 de outubro de 2016 20:24
  • Response.Redirect("~/Autenticar.aspx")

    Acredito que não seja isso, confirma se o nome da página está correta conforme o link, não consigo ver o que é exatamente.

    quarta-feira, 26 de outubro de 2016 20:44
  • Esta tudo dentro da pagina CarrinhoCompra.aspx



    • Editado JonatasC quinta-feira, 27 de outubro de 2016 13:25
    quarta-feira, 26 de outubro de 2016 21:57
  • Cesar , bom dia , esse metodo é so para calcular O SEDEX , sera que vou ter que criar um metodo para buscar cep TB ?
    quinta-feira, 27 de outubro de 2016 13:25
  • Olá Jonatas!

    Você já pensou na possibilidade de utilizar os web services dos Correios para fazer esse tipo de cálculo? Me parece mais simples do que você está fazendo, veja só:

    Acessando os web services dos Correios com C# e VB.NET (consulta de CEPs e preços)

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    quinta-feira, 27 de outubro de 2016 14:13
    Moderador
  • Andre ,boa tarde 

    cheguei ver seu tutorial no seu site , excelente.E com aquele metodo daria para colocar no site somente o campo digitar cep e  chamar o valor do sedex , criando um metodo no botão click e entrar o valor do sedex no carrinho para enviar para pagamento ?

    quinta-feira, 27 de outubro de 2016 18:03
  • Olá Jonatas!

    Com a chamada do web service você consegue passar um CEP e outras informações do pacote (como dimensões, tipo de envio, etc) e ele te retorna o preço que você pode adicionar no seu carrinho de compras..

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    quarta-feira, 9 de novembro de 2016 08:01
    Moderador
  • Valeu André!!!

    Muito obrigado mesmo!

    quarta-feira, 18 de janeiro de 2017 01:25