Boa noite pessoal, estive investigando no google mas é muito pobre de material sobre SNGPC estou com o problema do membro renan acima diz que meu arquivo contem caracteres inválidos, já tentei de tudo e o incrível é que se eu upar pelo site da anvisa funciona ok, testei o código do jair molina acima e deu o mesmo erro vou anexar o xml e o zip além de postar o código que estou usando se alguém tiver uma luz eu agradeço demais.
procedure TfrmSNGPC2.btnEnviarClick(Sender: TObject);
var
arr : TByteDynArray;
xml : TXMLDocument;
msg : IXMLMensagemSNGPCType;
ws : sngpcSoap;
HashIdentificacao : String;
Retorno : String;
Stream : TStringStream;
afile: file of byte;
buffer: TByteArr; // array of byte;
i: Integer;
Arq : TFileStream;
aArray : TByteDynArray;
x : string;
teste : AnsiString;
begin
if MessageDlg('Deseja Enviar Arquivo ['+Arquivo+'] Para SNGPC ?', mtWarning, [mbYes, mbNo], 0) <> mrYes then
abort;
//
xml := TXmlDocument.Create(nil);
xml.Active := False;
xml.FileName := '';
//
// Transmissao do Arquivo para Anvisa
//
if rgMetodo.ItemIndex = 0 then
begin
ArquivoZip := ChangeFileExt(Arquivo,'.ZIP');
AbZipper1.FileName := ArquivoZip;
AbZipper1.AddFiles(Arquivo,0);
AbZipper1.Save;
AbZipper1.CloseArchive;
//
AssignFile(afile, ArquivoZip);
Reset(afile);
SetLength(buffer, FileSize(afile));
For i := 1 to FileSize(afile) do
Read(afile, buffer[i - 1]);
CloseFile(afile);
end;
//
//
//
if rgMetodo.ItemIndex = 1 then
begin
tsqZip1.ZipFileName := ChangeFileExt(Arquivo,'.ZIP');
tsqZip1.FilesToZip.Add(Arquivo);
tsqZip1.Execute;
end;
//
xml.LoadFromFile(Arquivo);
//
if cbhomologacao.Checked then
begin
HTTPRIO1.URL := 'http://homologacao.anvisa.gov.br/sngpc/webservice/sngpc.asmx';
HTTPRIO1.WSDLLocation := 'http://homologacao.anvisa.gov.br/sngpc/webservice/sngpc.asmx?wsdl';
end
else
begin
HTTPRIO1.URL := 'http://sngpc.anvisa.gov.br/webservice/sngpc.asmx';
HTTPRIO1.WSDLLocation := 'http://sngpc.anvisa.gov.br/webservice/sngpc.asmx?wsdl';
end;
HTTPRIO1.Service := 'sngpc';
HTTPRIO1.Port := 'sngpcSoap';
//
ws := HTTPRIO1 as sngpcSoap;
//
Retorno := ws.ValidarUsuario(cxDBTextEdit1.Text, cxDBTextEdit2.Text);
Memo1.Lines.Add('Validação: '+retorno);
//
if Retorno = 'Ok' then
begin
//
HashIdentificacao:= MD5Print(MD5String(xml.XML.text));
//
Memo1.Lines.Add(DateTimeToStr(now));
Memo1.Lines.Add('===Envio===');
memo1.lines.Add('Hash: '+HashIdentificacao);
memo1.Lines.Add('Arquivo: '+ArquivoZip);
//
// showmessage(xml.XML.Text);
//
if rgMetodo.ItemIndex = 0 then
Retorno := ws.EnviaArquivoSNGPC(cxDBTextEdit1.Text, cxDBTextEdit2.Text, CopyByteArray(buffer), HashIdentificacao);
if rgMetodo.ItemIndex = 1 then
Retorno := ws.EnviaArquivoSNGPC(cxDBTextEdit1.Text, cxDBTextEdit2.Text, FIleToByteArray(ArquivoZip), HashIdentificacao);
Memo1.Lines.Add('Envio: '+retorno);
//
// 1234567890123456789012345678
//
if copy(Retorno,1,28) = 'Arquivo recebido com sucesso' then
Memo1.Lines.Add('Arquivo '+ArquivoZip+' Enviado Com Sucesso')
else
Memo1.Lines.Add('Falha no Envio do Arquivo '+ArquivoZip);
//
end
else
begin
Memo1.Lines.Add('Falha no Envio do Arquivo '+Arquivo);
end;
//
Memo1.Lines.Add('');
//
Arquivo := '';
edtArquivo.Text := Arquivo;
// Fim da Rotina de Transmicao
end;
SNGPCInventario10062013.XML
SNGPCInventario10062013.ZIP
SNGPCInventario10062013.XML
SNGPCInventario10062013.ZIP