WEBSERVICE - VIA POST USANDO POSTWEBSERVICE

MICHAELL 15/10/2012 17:33:54
#412090
Ola pessoal...

utilizo a funcao abaixo para enviar dados para um webService...via GET

PostWebservice([Ô]http://www.meuSite.com.br/webservice.php?var1=resultado1[Ô], [Ô][Ô], [Ô][Ô])


  Public Function PostWebservice(ByVal URL 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[Ô], URL, 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



porém via GET tem limite de caracteres... gostaria de enviar via POST pois é sem limite.
Alem sabe como faço para enviar via POST os dados ?
FOXMAN 15/10/2012 22:10:51
#412109
Então neh !!.

A maneiria mais [Ô]tranquila[Ô] de fazer isso seria vc criar uma Dll no .net que faça o acesso ao ws desejado retornando os métodos disponíveis.
Assim vc teria acesso aos metodos POST do ws.

Ficaria algo tipo :

Dim sd as new SuaDLL()
Dim string = sd.SeuMetodo() [ô]Neste caso SeuMetodo na Dll e no WS retornam o mesmo tipo de Dados(string)

Se fosse algo com passagem de parâmetro seria algo do tipo :

Dim sd as new SuaDLL()
Dim string = sd.SeuMetodo(suavariavel1,suavariavel2) [ô]Neste caso SeuMetodo na Dll e no WS retornam o mesmo tipo de Dados(string)

Onde SeuMetodo é uma referencia ao metodo desejado no seu webservice.


Acredito que seria a melhor forma de fazer isso e menos trabalhosa.
Eu particularmente nunca trabalhei com webservice no vb6 e não saberia lhe informar se haveria uma forma mais prática.

MICHAELL 16/10/2012 11:43:56
#412131
iii.. complico...

nao mexo nada com .net

Será que nao há uma maneira mais facil? tipo, apenas informar que é via POST... e enviar os parametros como já faço com GET ?
FOXMAN 16/10/2012 19:00:26
#412169
Citação:

:
iii.. complico...

nao mexo nada com .net

Será que nao há uma maneira mais facil? tipo, apenas informar que é via POST... e enviar os parametros como já faço com GET ?



Então, para vb6 eu sinceramente não conheço nada que possa te ajudar.
KERPLUNK 17/10/2012 08:47:47
#412186
Via método POST, você pode simplesmente usar um componente webbrowser, formar a URL e usar o método Navigate2 do webbrwoser
MICHAELL 21/01/2013 11:58:30
#417788
ok.. se via post nao é possível...
teria como como enviar XML.. e capturar no servidor (PHP) ?

Pois na funcao tem duas variaveis, SoapActionUrl e XmlBody

mas como usar? alguem sabe?

Na internet nao achei nenhum exemplo usando essas variaveis.
Tópico encerrado , respostas não são mais permitidas