SOBRE RASTREAMENTO CORREIOS
Ola Pessoal , eu peguei aqui no forum um sistema que esta vb.net para rastreamento de encomenda , porem como uso c# estou com dificuldades para usar ele se alguem puder me ajudar , eu ja traduzi maioria dele mais falta esta parte
Public Shared Sub executar(ByVal browser As WebBrowser)
Dim txtIdentificador As HtmlElement = browser.Document.GetElementById([Ô]P_COD_UNI[Ô]) [ô]TextBox do site onde se coloca o nº do objeto
Dim colecao As HtmlElementCollection = browser.Document.GetElementsByTagName([Ô]textarea[Ô])
Dim txtArea As HtmlElement = Nothing
Dim botao As HtmlElement = Nothing
Dim clique As mshtml.IHTMLElement
Dim temp As String [ô]Variáveis
Dim vetor(), Tags() As String [ô]Arrays
Dim Item As ListViewItem = Nothing
Dim local As String = String.Empty
Dim Erro As String = String.Empty
Dim HTML As New trabalhoWeb
With FrmResultado
.Panel1.BringToFront()
.Panel1.Dock = dockPanel1(.Panel1)
.ListView1.Items.Clear()
For Each coisa As HtmlElement In colecao
If coisa.Id = [Ô]objetos[Ô] Then
Console.WriteLine()
txtArea = coisa
Exit For
End If
Next
txtArea.InnerText = codigo [ô]Insere o nº de rastreamento no TexBox do site
classes.generico.esperar()
botao = browser.Document.GetElementById([Ô]btnPesq[Ô])
clique = botao.DomElement
clique.click()
classes.generico.esperar()
classes.generico.carregarBrowser(browser)
Erro = browser.Document.Body.InnerText
trabalhoWeb.iniciaHTML
Using traba As New trabalho
If Not Erro.Contains([Ô]O nosso sistema não possui dados[Ô]) Then
vetor = traba.pegaConteudoTabela(browser)
For A = 1 To UBound(vetor) [ô]Loop pelo Primeiro Array
Tags = Split(vetor(A), [Ô]<td[Ô]) [ô]Separa o conteudo de Vetor pela taga <TD>
For B = LBound(Tags) To UBound(Tags) [ô]Loop pelo 2º Array (Contém os dados que se quer retornar
If Not Tags(B) = vbCrLf Then [ô]Verifica se não é um Line Feed
If Not Tags(B) = vbLf Then
temp = traba.preparaItem(Tags(B))
If temp.Contains([Ô]:[Ô]) Then [ô]Se contiver [Ô]:[Ô]
traba.data = temp [ô]pega a data
traba.hora = temp [ô]pega o horário
traba.local = temp [ô]pega o local
Else
traba.situacao = temp [ô]pega a situação
End If
End If
End If
Next
traba.insereItemsListView(.ListView1)
trabalhoWeb.criaItem(traba.data, traba.hora, traba.local, traba.situacao, traba.observacoes)
Next
Else
exibeErro()
GoTo Erro
End If
classes.generico.navegar(.WebBrowser1)
End Using
trabalhoWeb.finalizaHTML()
trabalhoWeb.insereHTML()
.lblStatus.Text = [Ô]ConcluÃdo[Ô]
.Panel1.Dock = dockPanel1(.Panel1, False)
End With
Erro:
End Sub
se alguem tiver alguma outra ideia , estou usando windows forms
Obrigado
Joao
Public Shared Sub executar(ByVal browser As WebBrowser)
Dim txtIdentificador As HtmlElement = browser.Document.GetElementById([Ô]P_COD_UNI[Ô]) [ô]TextBox do site onde se coloca o nº do objeto
Dim colecao As HtmlElementCollection = browser.Document.GetElementsByTagName([Ô]textarea[Ô])
Dim txtArea As HtmlElement = Nothing
Dim botao As HtmlElement = Nothing
Dim clique As mshtml.IHTMLElement
Dim temp As String [ô]Variáveis
Dim vetor(), Tags() As String [ô]Arrays
Dim Item As ListViewItem = Nothing
Dim local As String = String.Empty
Dim Erro As String = String.Empty
Dim HTML As New trabalhoWeb
With FrmResultado
.Panel1.BringToFront()
.Panel1.Dock = dockPanel1(.Panel1)
.ListView1.Items.Clear()
For Each coisa As HtmlElement In colecao
If coisa.Id = [Ô]objetos[Ô] Then
Console.WriteLine()
txtArea = coisa
Exit For
End If
Next
txtArea.InnerText = codigo [ô]Insere o nº de rastreamento no TexBox do site
classes.generico.esperar()
botao = browser.Document.GetElementById([Ô]btnPesq[Ô])
clique = botao.DomElement
clique.click()
classes.generico.esperar()
classes.generico.carregarBrowser(browser)
Erro = browser.Document.Body.InnerText
trabalhoWeb.iniciaHTML
Using traba As New trabalho
If Not Erro.Contains([Ô]O nosso sistema não possui dados[Ô]) Then
vetor = traba.pegaConteudoTabela(browser)
For A = 1 To UBound(vetor) [ô]Loop pelo Primeiro Array
Tags = Split(vetor(A), [Ô]<td[Ô]) [ô]Separa o conteudo de Vetor pela taga <TD>
For B = LBound(Tags) To UBound(Tags) [ô]Loop pelo 2º Array (Contém os dados que se quer retornar
If Not Tags(B) = vbCrLf Then [ô]Verifica se não é um Line Feed
If Not Tags(B) = vbLf Then
temp = traba.preparaItem(Tags(B))
If temp.Contains([Ô]:[Ô]) Then [ô]Se contiver [Ô]:[Ô]
traba.data = temp [ô]pega a data
traba.hora = temp [ô]pega o horário
traba.local = temp [ô]pega o local
Else
traba.situacao = temp [ô]pega a situação
End If
End If
End If
Next
traba.insereItemsListView(.ListView1)
trabalhoWeb.criaItem(traba.data, traba.hora, traba.local, traba.situacao, traba.observacoes)
Next
Else
exibeErro()
GoTo Erro
End If
classes.generico.navegar(.WebBrowser1)
End Using
trabalhoWeb.finalizaHTML()
trabalhoWeb.insereHTML()
.lblStatus.Text = [Ô]ConcluÃdo[Ô]
.Panel1.Dock = dockPanel1(.Panel1, False)
End With
Erro:
End Sub
se alguem tiver alguma outra ideia , estou usando windows forms
Obrigado
Joao
para converter use aqui http://converter.telerik.com/
ou procure sobre sharpdeveloper mais precisamente a versao 3 ela tem um conversor de vb para c# e c# para vb....
ou procure sobre sharpdeveloper mais precisamente a versao 3 ela tem um conversor de vb para c# e c# para vb....
Tu precisa saber se foi entregue ou rastrear cada passo?
Se precisar confirmar a entrega, eu uso o código abaixo. é orientado a gambiarra mas funcional =)
Se precisar confirmar a entrega, eu uso o código abaixo. é orientado a gambiarra mas funcional =)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
namespace ConsultaCorreios
{
public class ValidaStatus
{
#region Propriedades
public string codigo { get; set; }
public string data { get; set; }
public string status { get; set; }
string urlfixa = @[Ô]http://websro.correios.com.br/sro_bin/txect01$.QueryList?P_LINGUA=001&P_TIPO=001&P_COD_UNI=[Ô];
#endregion
#region Construtores
public ValidaStatus()
{
}
public ValidaStatus(string codigoEncomenda)
{
codigo = codigoEncomenda;
}
#endregion
public bool Validar()
{
string link = String.Concat(urlfixa, codigo);
Uri site = new Uri(link);
System.Net.HttpWebRequest req;
req = (HttpWebRequest)System.Net.HttpWebRequest.Create(site);
if (req.GetResponse().ContentLength > 0)
{
System.IO.StreamReader str = new StreamReader(req.GetResponse().GetResponseStream());
string texto = str.ReadToEnd();
if (texto.Length > 0)
{
if (texto.ToLower().Contains([Ô]entregue[Ô]) || texto.ToLower().Contains([Ô]entrega efetuada[Ô]))
{
string[] separador = new string[] { [Ô]<tr>[Ô] };
StringSplitOptions op = new StringSplitOptions();
string[] pagina = texto.Split(separador, op);
if (pagina.Length > 1)
{
string[] aux = pagina[2].Split([ô]>[ô]);
if (aux.Length > 2)
{
string[] fim = aux[1].Split([ô]<[ô]);
data = fim[0];
}
}
status = [Ô]entregue[Ô];
return true;
}
else
{
string[] separador = new string[] { [Ô]<tr>[Ô] };
StringSplitOptions op = new StringSplitOptions();
string[] pagina = texto.Split(separador, op);
if (pagina.Length > 2)
{
string[] aux = pagina[2].Split([ô]>[ô]);
if (aux.Length > 4)
{
string[] fim = aux[3].Split([ô]<[ô]);
status = fim[0];
}
}
}
}
}
return false;
}
}
}
eu queria saber desde do inicio o que aconteceu com o objeto é possivel fazer isto com seu codigo
Bom dia.
O meu código não faz isso mas é algo simples de ser implementado.
Como o meu código lê o HTML da página de rastreamento de objetos (http://websro.correios.com.br/sro_bin/txect01$.QueryList?P_LINGUA=001&P_TIPO=001&P_COD_UNI=PI827857505BR), tu só precisaria analisar o código HTML e separá-lo.
Dando uma olhada rápida, percebi que todo histórico do objeto se encontra dentro de um <table></table>
Cada linha na tabela, ou seja, <tr></tr> representa uma movimentação do objeto
Cada coluna na tabela, ou seja, <td></td>, representa Data, Local e Situação
Se uma coluna (<TD>) possui a propriedade rowspan = 2 significa que ela idêntica na linha atual e na próxima linha
Com essas informações tu vai ser capaz de quebrar o arquivo HTML, se quiser.
Do contrário, tu pode utilizar uma API gratuita: http://developers.agenciaideias.com.br/correios/rastreamento
Ela retorna os dados em formato XML ou JSON, prontinhos.
O meu código não faz isso mas é algo simples de ser implementado.
Como o meu código lê o HTML da página de rastreamento de objetos (http://websro.correios.com.br/sro_bin/txect01$.QueryList?P_LINGUA=001&P_TIPO=001&P_COD_UNI=PI827857505BR), tu só precisaria analisar o código HTML e separá-lo.
Com essas informações tu vai ser capaz de quebrar o arquivo HTML, se quiser.
Do contrário, tu pode utilizar uma API gratuita: http://developers.agenciaideias.com.br/correios/rastreamento
Ela retorna os dados em formato XML ou JSON, prontinhos.
JOAOBENEVIDES
Você pode clicar no link abaixo, baixar a ferramenta e converter o código VB.NET para C#:
LANGUAGE CONVERTER
Abraços.
Você pode clicar no link abaixo, baixar a ferramenta e converter o código VB.NET para C#:
LANGUAGE CONVERTER
Abraços.
Tópico encerrado , respostas não são mais permitidas