DUVIDA WEB SERVICE

LG.MOURA 20/03/2012 16:49:47
#397707
Olá pessoal, estou com um pequeno problema.. acho que não é bicho de sete cabeças.. bom estou tentando enviar uma informação para o web service, estou fazendo um Post.. até aí tudo bem.. o problema é que em um dos parametros tenho q enviar uma String do conteudo de um arquivo xml, segue meu codigo abaixo para melhor entendimento:

onde Sxml é a string com o meu XML.

strURL = [Ô]http://www.meudominio.com.br/AKL_TEST/Service.asmx[Ô]
strSoapAction = [Ô]http://tempuri.org/RecebePedidos[Ô]
strXml = [Ô]<?xml version=[Ô][Ô]1.0[Ô][Ô] encoding=[Ô][Ô]utf-8[Ô][Ô]?>[Ô] & _
[Ô]<soap:Envelope xmlns:xsi=[Ô][Ô]http://www.w3.org/2001/XMLSchema-instance[Ô][Ô] xmlns:xsd=[Ô][Ô]http://www.w3.org/2001/XMLSchema[Ô][Ô] xmlns:soap=[Ô][Ô]http://schemas.xmlsoap.org/soap/envelope/[Ô][Ô]>[Ô] & _
[Ô]<soap:Body>[Ô] & _
[Ô]<RecebePedidos xmlns=[Ô][Ô]http://tempuri.org/[Ô][Ô]>[Ô] & _
[Ô]<wxml>[txt-color=#e80000][Ô] & Sxml & [Ô][/txt-color]</wxml>[Ô] & _
[Ô]<Retorno></Retorno>[Ô] & _
[Ô]</RecebePedidos>[Ô] & _
[Ô]</soap:Body>[Ô] & _
[Ô]</soap:Envelope>[Ô]


o Problema é que ele nem consegue enviar.. o retorno vem nulo
KERPLUNK 20/03/2012 17:19:07
#397715
Meio esquisito... mostre como está fazendo a chamada do webmethod... acho que seu problema está na serialização do seu arquivo XML
LG.MOURA 20/03/2012 17:23:38
#397716
segui um exemplo que peguei aqui mesmo no site.. segue abaixo a função:
Citação:

Private Function PostWebservice(ByVal AsmxUrl As String, ByVal SoapActionUrl As String, ByVal XmlBody As String) As String
Dim objDom As Object
Dim objXMLHTTP As Object
Dim strRet As String
Dim intPos1 As Integer
Dim intPos2 As Integer

On Error GoTo Err_PW

[ô] Create objects to DOMDocument and XMLHTTP
Set objDom = CreateObject([Ô]MSXML2.DOMDocument[Ô])
Set objXMLHTTP = CreateObject([Ô]MSXML2.XMLHTTP[Ô])

[ô] Load XML
objDom.async = False
objDom.loadXML XmlBody

[ô] Open the webservice
objXMLHTTP.open [Ô]POST[Ô], AsmxUrl, False

[ô] Create headings
objXMLHTTP.setRequestHeader [Ô]Content-Type[Ô], [Ô]text/xml; charset=utf-8[Ô]
objXMLHTTP.setRequestHeader [Ô]SOAPAction[Ô], SoapActionUrl

[ô] Send XML command
objXMLHTTP.send objDom.xml

[ô] Get all response text from webservice
strRet = objXMLHTTP.responseText

[ô] Close object
Set objXMLHTTP = Nothing

[ô] Extract result
intPos1 = InStr(strRet, [Ô]Result>[Ô]) + 7
intPos2 = InStr(strRet, [Ô]</[Ô])
If intPos1 > 7 And intPos2 > 0 Then
strRet = Mid(strRet, intPos1, intPos2 - intPos1)
End If

[ô] Return result
PostWebservice = strRet

Exit Function
Err_PW:
PostWebservice = [Ô]Error: [Ô] & Err.Number & [Ô] - [Ô] & Err.Description

End Function

KERPLUNK 20/03/2012 17:25:58
#397718
Verifique o que contém a propriedade objDom.xml, dentro dela deve estar o seu arquivo xml já serializado.
LG.MOURA 20/03/2012 17:30:01
#397720
vem a informação do conteudo do meu XML na propriedade objDom.xml:


Citação:

<?xml version=[Ô]1.0[Ô]?>
<soap:Envelope xmlns:xsi=[Ô]http://www.w3.org/2001/XMLSchema-instance[Ô] xmlns:xsd=[Ô]http://www.w3.org/2001/XMLSchema[Ô] xmlns:soap=[Ô]http://schemas.xmlsoap.org/soap/envelope/[Ô]><soap:Body><RecebePedidos xmlns=[Ô]http://tempuri.org/[Ô]><wxml><CabPedido><data>2012-03-18</data><pedido>400001</pedido><cliente>6593</cliente><vendedor>4</vendedor><condicao>28</condicao><obs>Pedido Teste </obs><status>A</status><chave>QNG8N</chave><bonif>0</bonif><hora>172110</hora><cnpj>06104356000151</cnpj></CabPedido>
<Produtos><id1><pedido>400001</pedido><produto>173</produto><valor>6.56</valor><quantidade>12</quantidade><promocao>952</promocao><chave>QNG8N</chave><nada>172110</nada><cnpj>06104356000151</cnpj></id1>
<id2><pedido>400001</pedido><produto>1711</produto><valor>6.2</valor><quantidade>12</quantidade><promocao>0</promocao><chave>QNG8N</chave><nada>172110</nada><cnpj>06104356000151</cnpj></id2>
<id3><pedido>400001</pedido><produto>3623</produto><valor>4.31</valor><quantidade>12</quantidade><promocao>0</promocao><chave>QNG8N</chave><nada>172110</nada><cnpj>06104356000151</cnpj></id3>
<id4><pedido>400001</pedido><produto>3624</produto><valor>8.56</valor><quantidade>12</quantidade><promocao>0</promocao><chave>QNG8N</chave><nada>172110</nada><cnpj>06104356000151</cnpj></id4>
<id5><pedido>400001</pedido><produto>3797</produto><valor>3.83</valor><quantidade>1</quantidade><promocao>475</promocao><chave>QNG8N</chave><nada>172110</nada><cnpj>06104356000151</cnpj></id5>
<id6><pedido>400001</pedido><produto>22607</produto><valor>15.63</valor><quantidade>12</quantidade><promocao>0</promocao><chave>QNG8N</chave><nada>172110</nada><cnpj>06104356000151</cnpj></id6>
</Produtos></wxml><Retorno></Retorno></RecebePedidos></soap:Body></soap:Envelope>

LG.MOURA 21/03/2012 08:36:19
#397777
Pessoal acho que o problema ta no xml. alguem pra me dar uma luz??
KERPLUNK 21/03/2012 14:48:09
#397875
Tem certeza que esse parâmetro não deveria ser um XMLDocument ao invés de XML Serializado?
LG.MOURA 21/03/2012 14:56:22
#397878
poderia me explicar melhor?
KERPLUNK 21/03/2012 16:28:21
#397885
Bem, imagine um webservice como um módulo do VB6 que contém várias Subs e Functions. Bom, essas [Ô]subs e functions[Ô] são os webmethods. Como nas subs e functions, os webmethods têm parâmetros. Esses parâmetros devem ser do tipo correto ou a sub(webmethod) pode não funcionar. Como você está fazendo uma chamada do VB6, que só permite consumir webservices por SOAP, fica difícil saber se o parâmetro desse método específico pede um objeto [Ô]XMLDocument[Ô] ou se pede o próprio XML(O mesmo conteúdo do document, mas em formato de texto)
Uma alternativa seria você usar um client SOAP, como o SoapUI para ver o tipo do parâmetro certinho
LG.MOURA 21/03/2012 16:32:43
#397887
Já fiz o teste com o SOAP e funcionou... o problema é que o mesmo pra ser utilizado precisa estar instalado o soap toolkit.. uns 4mb mais ou menos..seria inviável ja que meus usuarios são inumeros... por isso optei pelo envio acima mencionado.. a nao ser que exista algo pra sem implementado no modulo sem precisar instalar.. entende?
KERPLUNK 21/03/2012 16:35:55
#397888
Bem, se quiser, posso ver pra vc qual o tipo do parâmetro, preciso do caminho do webservice...
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas