como acessar o web service dos correios

6
Como acessar o webservice dos correios Requisitos: Código desenvolvido em C# ASP NET, no ambiente Visual Studio 2010. Autor: Emerson Shigueo Sugimoto – BSI UTFPR Primeiro passo: Acessar o site dos correios (http://www.correios.com.br/webservices/default.cfm) e fazer o download o arquivo de documentação SCPP_manual_implementacao_calculo_remoto_de_precos_e_prazos. Segundo Passo: Criar um projeto ASP Net do Visual Studio (Figura 001) e adicionar a referência ao webservice: http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx (Figura 002) Figura 001 – Novo Projeto no Visual Studio

Upload: emerson-emer

Post on 03-Jul-2015

1.234 views

Category:

Documents


2 download

DESCRIPTION

Como Acessar o Web Service Dos Correios

TRANSCRIPT

Page 1: Como Acessar o Web Service Dos Correios

Como acessar o webservice dos correios Requisitos: Código desenvolvido em C# ASP NET, no ambiente Visual Studio 2010. Autor: Emerson Shigueo Sugimoto – BSI UTFPR Primeiro passo: Acessar o site dos correios (http://www.correios.com.br/webservices/default.cfm) e fazer o download o arquivo de documentação SCPP_manual_implementacao_calculo_remoto_de_precos_e_prazos. Segundo Passo: Criar um projeto ASP Net do Visual Studio (Figura 001) e adicionar a referência ao webservice: http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx (Figura 002)

Figura 001 – Novo Projeto no Visual Studio

Page 2: Como Acessar o Web Service Dos Correios

Figura 002 – Add Web Reference O link do webservice usado é: http://www.correios.com.br/webservices/default.cfm (ver Figura 003).

Page 3: Como Acessar o Web Service Dos Correios

Figura 003 – Adicionando a referência ao projeto O seu projeto deve estar assim:

Figura 004 – Projeto Para criar a referência do web service via código, basta fazer isto: webserviceCorreios.br.com.correios.ws.CalcPrecoPrazoWS ws = new br.com.correios.ws.CalcPrecoPrazoWS();

Particularmente eu adicionei uma página index.aspx e o código ficou assim: /// <summary> /// Exemplo simples em C# de como acessar o webservice dos correios /// </summary> public partial class index : System.Web.UI.Page { enum tpCdFormato : short { caixa_pacote = 1, rolo_prisma = 2 }

Page 4: Como Acessar o Web Service Dos Correios

/// <summary> /// OBS: em SEDEX_com_contrato1, SEDEX_com_contrato2 e SEDEX_com_contrato3, a documentação dos correios /// nomeia-os como 'SEDEX_com_contrato', sem realizar uma distinção clara entre eles, apenas o código muda -@see getCodigo(tpCdServico); /// </summary> enum tpCdServico { PAC_sem_contrato, SEDEX_sem_contrato, SEDEX_a_Cobrar_sem_contrato, SEDEX_10_sem_contrato, SEDEX_Hoje_sem_contrato, SEDEX_com_contrato1, SEDEX_com_contrato2, SEDEX_com_contrato3, e_SEDEX_com_contrato, PAC_com_contrato } private string getCodigo(tpCdServico tp) { switch(tp) { case tpCdServico.PAC_sem_contrato: return "41106"; case tpCdServico.SEDEX_sem_contrato: return "40010"; case tpCdServico.SEDEX_a_Cobrar_sem_contrato: return "40045"; case tpCdServico.SEDEX_10_sem_contrato: return "40215"; case tpCdServico.SEDEX_Hoje_sem_contrato: return "40290"; case tpCdServico.SEDEX_com_contrato1: return "40096"; case tpCdServico.SEDEX_com_contrato2: return "40436"; case tpCdServico.SEDEX_com_contrato3: return "40444"; case tpCdServico.e_SEDEX_com_contrato: return "81019"; case tpCdServico.PAC_com_contrato: return "41068"; } return string.Empty; } protected void Page_Load(object sender, EventArgs e) { tpCdServico tpCdSer = tpCdServico.SEDEX_10_sem_contrato; //pode ser mais de um string cepOrigem = "71939360"; string cepDestino = "72151613"; tpCdFormato tpFormato = tpCdFormato.caixa_pacote; string peso = "0,25"; //em Kg bool maoPropria = false; bool avisoRecebimento = true; webserviceCorreios.br.com.correios.ws.CalcPrecoPrazoWS ws = new br.com.correios.ws.CalcPrecoPrazoWS(); br.com.correios.ws.cResultado res = ws.CalcPrecoPrazo( nCdEmpresa: "", sDsSenha: "",

Page 5: Como Acessar o Web Service Dos Correios

nCdServico: getCodigo(tpCdSer), sCepOrigem: cepOrigem, sCepDestino: cepDestino, nVlPeso: peso, nCdFormato: Convert.ToInt16(tpFormato), nVlComprimento:0, nVlAltura:0, nVlLargura:0, nVlDiametro:0, sCdMaoPropria: maoPropria ? "S":"N", nVlValorDeclarado:0, sCdAvisoRecebimento: avisoRecebimento ? "S" : "N"); string rt = "<hr /><span style=\"font-family:Verdana, Geneva, sans-serif; font-size:10pt;\">"; foreach(br.com.correios.ws.cServico cs in res.Servicos) { //Response.Write(cs.ToString() + "<br />"); rt += "<strong>Codigo:</strong> " + cs.Codigo + "<br />"; rt += "<strong>EntregaDomiciliar:</strong> " + cs.EntregaDomiciliar + "<br />"; rt += "<strong>EntregaSabado:</strong> " + cs.EntregaSabado + "<br />"; rt += "<strong>PrazoEntrega:</strong> " + cs.PrazoEntrega + "<br />"; rt += "<strong>Valor:</strong> " + cs.Valor + "<br />"; rt += "<strong>ValorAvisoRecebimento:</strong> " + cs.ValorAvisoRecebimento + "<br />"; rt += "<strong>ValorMaoPropria:</strong> " + cs.ValorMaoPropria + "<br />"; rt += "<strong>ValorValorDeclarado:</strong> " + cs.ValorValorDeclarado + "<br />"; rt += "<strong>Erro:</strong> " + cs.Erro + "<br />"; rt += "<strong>MsgErro:</strong> " + cs.MsgErro + "<br />"; rt += "</span><hr />"; } litResuladoCorreios.Text = rt; ws = null; } }

OBS a minha página index.aspx contém um controle literal (litResuladoCorreios): <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="webserviceCorreios.index" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <asp:Literal ID="litResuladoCorreios" runat="server"></asp:Literal>

Page 6: Como Acessar o Web Service Dos Correios

</body> </html>

O resultado é:

Para demais informações, favor acessar o site dos correios e ler a documentação.