Hello, vou ser bem direto. Estou precisando enviar um .xml para o web server da sefaz e receber uma resposta. Eu não tenho muita experiencia com web service, mais já li muito a respeito.
Estou usando o qtsoap que tive que baixar pois não é nativo do Qt.
No web service tem disponibilizado o WSDL que nada mais é do que a Descriçao do web service [sefazvirtual.fazenda.gov.br], mas não sei onde estão os métodos e os parametros, tá um pouco confuso. :/
Tenho tbm os exemplos de soap da NfeRecepcao2, que acredito ser a url pra onde eu tenho que enviar o xml:
Exemplo soap em xml [sefazvirtual.fazenda.gov.br]
Usando o qtsoap, eu não consigo gerar um xml igual ao que está no exemplo.
meu codigo:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "nfe.h"
#include <qtsoap.h>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QtSoapMessage msg;
transport.setHost("www.sefazvirtual.fazenda.gov.br",443);
connect(&transport, SIGNAL(responseReady()),this,SLOT(getResponse()));
msg.setMethod("nfeDadosMsg","http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2");
msg.addMethodArgument("versaoDados","","2.0");
msg.addMethodArgument("cUF","","MA");
msg.addMethodArgument("nfeDadosMsg","","C:\\QtSDK\\QtCreator\\NFe\\testaNFe\\arquivo.xml");
transport.setAction("http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2/nfeRecepcaoLote2");
transport.submitRequest(msg, "/nfeRecepcao/nfeRecepcao2.asmx");
qDebug() << msg.toXmlString();
void MainWindow::getResponse()
{
qDebug() << "getResponse";
// qDebug()<< "Retorno >" << retorno.toXmlString();
const QtSoapMessage &resp = transport.getResponse();
if(resp.isFault())
qDebug() << resp.faultString().value().toString();
}
A Saída do xml é
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Body xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<nfeDadosMsg >
<versaoDados xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance">2.0</versaoDados>
<cUF xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance">MA</cUF>
<nfeDadosMsg xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance">C:\QtSDK\QtCreator\NFe\testaNFe\arquivo.xml</nfeDadosMsg>
</nfeDadosMsg>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Diferente do exemplo, não tem header pois nao sei como fazer usando essa classe qtsoap.
Alguem tem alguma sugestão?
↧