WEB SEVICE EM C#

SIDNEINARDO 05/10/2015 11:01:50
#452162
Ola..
Eu criei um tópico em VB6 tb, mas não consegui muito progresso.. acho que pelo web service que estou tentando acessar, mas pode ser em C# também.

Eu preciso acessar um webservice e deixar informações da Nota Fiscal de Serviço, tentei fazer em VB6 que é a linguagem que usamos na empresa, não consegui.. sempre da um erro.. ja mencionado em outro topico..

O pessoal do suporte disponibilizou um manual para fazer em c#. o manual é um exemplo de como fazer.. que está abaixo do meu exemplo..
Fiz a minha programação de acordo com o que entendi.. qualquer ligação que faço para o suporte, eles mandam ver o manual..
Está dando um erro de conversão de dados, Eu não conheço muuuito de C#, deve ser alguma burrada minha, mas.. preciso resolver...
Se alguém puder identificar meu erro, por favor me informe..

Código passado de exemplo pelo suporte..
qualquer pergunta que eu faça ao suporte, eles mandam ver o manual ( que é isto ai.. )


Array ret = null;
try
{
Declaracao = [Ô]SELECT * FROM Nfe[Ô];
Comando = new OleDbCommand(Declaracao, _conexao);
Leitura = Comando.ExecuteReader();

while (Leitura.Read())
{

ret = wsmj.EnvNfe(
_usuario,
_senha,
Leitura[[Ô]prf[Ô]].ToString(),
Leitura[[Ô]cnp[Ô]].ToString(),
Leitura[[Ô]ctr[Ô]].ToString(),
Leitura[[Ô]cnpj[Ô]].ToString(),
Leitura[[Ô]cnpjn[Ô]].ToString(),
Leitura[[Ô]ie[Ô]].ToString(),
Leitura[[Ô]im[Ô]].ToString(),
Leitura[[Ô]lgr[Ô]].ToString(),
Leitura[[Ô]num[Ô]].ToString(),
....
tem outros campos.. mas não é o problema aqui..
...
comp.DoubleToDolar(Leitura[[Ô]paisest[Ô]].ToString()));

//trata o status de controle
if (((WebReference.EnvNfe[])(ret))[0].okk.ToString().Equals([Ô]OK[Ô]))
{
_enviados[0]++;
}
else
{
_erros.Add(((WebReference.EnvNfe[])(ret))[0].okk.ToString());
_erro = true;
}
}
Leitura.Close();
}
catch (InvalidOperationException Ex)
{
Leitura.Dispose();
_erros.Add(Ex.Message);
}
catch (Exception Ex)
{
Leitura.Dispose();
_erros.Add(Ex.Message);
}
///////////////////////


//Meu código em C#

private void bEnviar_Click(object sender, EventArgs e)
{
try
{
// strUrl = [Ô]http://www.mgmtributacao.com.br/issqn/wservice/wsnfeenvia.php?wsdl[Ô]
// strSoapAction = [Ô]http://www.mgmtributacao.com.br/issqn/wservice/wsnfeenvia.php/EnvNfe?wsdl[Ô]
Boolean _erro;

string[] s = new string[110];

List<string> lstC = new List<string>();
lstC = fTxt2List([Ô]C:\\NFSe\    xtTeste.txt[Ô]); // carrego os dados ja gerado pelo sistema em VB. na ordem dos campos
lstConteudo.DataSource = lstC;

int nEnv = 0;
String vUsuario = [Ô]123456[Ô];
String vSenha = [Ô]654321[Ô];

Array ret = null;
try
{
for( int i = 0; i < 110; i++ ) { s[i] = lstC[i]; }
ret = s.ToArray();



// Dá erro na linha baixo.. diz que não pode converter tipos. Creio que eu estou errando no preenchimento da variavel ret.


if (((wsRefEnvia.EnvNfe[])(ret))[0].okk.ToString().Equals([Ô]OK[Ô]))
{ nEnv++; }
else
{
lstRetorno.Items.Add(((wsRefEnvia.EnvNfe[])(ret))[0].okk.ToString());
_erro = true;
}
}
catch (InvalidOperationException Ex)
{ lstRetorno.Items.Add([Ô]IOE: [Ô] + Ex.Message); }
catch (Exception Ex)
{ lstRetorno.Items.Add([Ô]E1: [Ô] + Ex.Message); }
}
catch (Exception Ex)
{ lstRetorno.Items.Add([Ô]E2: [Ô] + Ex.Message); }



}
///////////////
public List<string> fTxt2List(string pArquivo)
{

List<string> vlst = new List<string>();
if (System.IO.File.Exists(pArquivo))
{
StreamReader srTexto = srTexto = new StreamReader(pArquivo);
String sLinha = srTexto.ReadLine();
while (sLinha != null)
{
vlst.Add(sLinha);
sLinha = srTexto.ReadLine();
}
}
return vlst;
}

////////////////////////////////////////////////////////




FOXMAN 05/10/2015 11:54:46
#452164
Qual é o valor de ret, quando sai da linha ret = s.ToArray(); ????

Tentou utilizando o método Add de ret ???

Tipo assim :

ret.Add(s);
ao invés de :

ret = s.ToArray();

Qual o tipo de dados esperado em :
wsRefEnvia.EnvNfe[])(?????)
SIDNEINARDO 05/10/2015 13:26:57
#452167
Foxman,

Tentei agora o ret.Add(s); mas dá o erro:
[ô]System.Array[ô] does not contain a definition for [ô]Add[ô] and no extension method [ô]Add[ô] accepting a first argument of type [ô]System.Array[ô] could be found (are you missing a using directive or an assembly reference?)

o tipo do retorno,da função, wsRefEnvia.EnvNfe[]) presumo que seja String, mas presumo.. como disse todo material que nos deram foi este exemplo, e quando pergunto algo, eles mandam ver o [Ô]manual[Ô].. difícil...

obrigado pela dica, mas se souber de algo mais..
agradeço.



SIDNEINARDO 06/10/2015 11:53:21
#452209
Alguém mais tem alguma ideia??
DS2T 06/10/2015 19:17:40
#452238
Acredito que seja uma questão simples:


 if (((wsRefEnvia.EnvNfe[])(ret))[0].okk.ToString().Equals([Ô]OK[Ô]))


Se você pegar essa parte do código, vai ver que está tentando converter o Array (ret) para o tipo wsRefEnvia.EnvNfe.
Olhando um pouco mais a cima do seu código vemos o seguinte trecho:

ret = s.ToArray();


Sendo que [Ô]s[Ô] é um array de string.

Resumindo, você está tentando converter uma array de string para o tipo wsRefEnviaEnvNfe. Realmente, não vai é pra dar certo.
Acredito que uma opção seria, mais ou menos assim:


wsRefEnvia.EnvNfe[] objWs = new wsRefEnvia.EnvNfe[ret.Count];
objWs[0].PropriedadeString = ret[0];

Etc... Resumindo, instanciar objeto por objeto e jogar o ret[0] pra uma propriedade do tipo string.

Ok?

Abraços
SIDNEINARDO 07/10/2015 11:22:04
#452264
Na verdade não estou nem conseguindo atribuir valor à Array ret.

não tem a opção de Add. ou algo assim.

tentei
ret[0] = [Ô]123[Ô]
ret.SetValue([Ô]123[Ô],0);
nada..

tentei colocar ret.Initialize();
mas nada tb.

por isto tinha colocado atribuído os valores ao S.
KERPLUNK 07/10/2015 13:14:53
#452269
Passe o endereço do webservice que eu faço um exemplo pra você.
SIDNEINARDO 07/10/2015 13:39:10
#452270
no manual é: http://www.mgmtributacao.com.br/issqn/wservice/wsnfeenvia.php
ai fuçando na net tentei o ? wsdl..

http://www.mgmtributacao.com.br/issqn/wservice/wsnfeenvia.php?wsdl
http://www.mgmtributacao.com.br/issqn/wservice/wsnfeenvia.php/EnvNfe?wsdl

Estou perdido nisto.. não conheço muito de c#, e pouco de ws. uso ftp, mas acho que é diferente..
em vb6, fiz o xml para envio ao webcervice.. mas não vai também..
se puder me ajudar, agradeço muito.

anexei o manual que deram para mim. talvez ajude a descobrir oque estou errando... ou mesmo seu modelo..

Obrigado.

Sidnei Nardo


SIDNEINARDO 13/10/2015 16:51:12
#452468
Alguém tem alguma ideia?

Obrigado.
MARCOSPRADOS 23/10/2015 00:45:25
#452942
Como vc esta adicionado o webservice ao projeto, adicionando referencia ou vis svcutil ?
SIDNEINARDO 23/10/2015 07:54:02
#452944
Ola..

Eu vou em Project -> Add Service Reference.

Faça seu login para responder