Durante o desenvolvimento de um client de WS, muitas vezes queremos ter certeza do que está sendo enviado e/ou o que está sendo recebido. Para fazermos isso na classe AdvPL TWsdlManager, basta colocarmos o valor .F. na propriedade lVerbose do objeto.
Dessa maneira, será criado na mesma pasta em que se encontra o TOTVS Application Server o arquivo request.log, que contém as mensagens que são enviadas ao servidor, e o arquivo response.log, que contém as mensagens que são recebidas do servidor.
Caso não esteja encontrando os arquivos criados, utilizar os binários locate ou find em ambiente Linux, ou utilizar o programa Everything (http://www.voidtools.com) em ambiente Windows.
Ao liga o verbose da classe, é exibido no console do Application Server, mas não gravados no arquivo console.log, algumas informações sobre headers que são enviados.
user function wsdl1
Local oWsdl
Local xRet
oWsdl := TWsdlManager():New()
oWsdl:lVerbose := .T.
xRet := oWsdl:ParseURL( "http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL" )
if xRet == .F.
conout( "Return -1. Erro: " + oWsdl:cError )
return -1
endif
xRet := oWsdl:SetOperation( "GetCityForecastByZIP" )
if xRet == .F.
conout( "Return -2. Erro: " + oWsdl:cError )
return -2
endif
if oWsdl:lStatus == .F.
conout( "Return -3. Erro: " + oWsdl:cError )
return -3
endif
xRet := oWsdl:SetValue( 0, "90210" )
if xRet == .F.
conout( "Return -4. Erro: " + oWsdl:cError )
return -4
endif
xRet := oWsdl:SendSoapMsg()
if xRet == .F.
conout( "Return -5. Erro: " + oWsdl:cError )
return -5
endif
conout( oWsdl:GetSoapResponse() )
return 0
[INFO ][SERVER] [Thread 7644] [11/06/2015 16:47:12] Debugger finished (carlos, tec-carlos)
[INFO ][SERVER] [11/06/2015 16:47:19] Starting Program U_WSDL1 Thread 7980 (carlos,TEC-CARLOS)
* Adding handle: conn: 0xefb7110
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 22 (0xefb7110) send_pipe: 1, recv_pipe: 0
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0*
About to connect() to wsf.cdyne.com port 80 (#22)
* Trying 4.59.146.111...
* Connected to wsf.cdyne.com (4.59.146.111) port 80 (#22)
> POST /WeatherWS/Weather.asmx HTTP/1.1
User-Agent: wsdlpull
Host: wsf.cdyne.com
Accept-Encoding: deflate, gzip
Content-Type: application/soap+xml; charset=UTF-8; action="http://ws.cdyne.com/WeatherWS/GetCityForecastByZIP"
Accept: application/soap+xml;
Content-Length: 481
* upload completely sent off: 481 out of 481 bytes
< HTTP/1.1 200 OK
< Cache-Control: no-cache
< Pragma: no-cache
< Content-Type: application/soap+xml; charset=utf-8
< Expires: -1
* Server Microsoft-IIS/7.5 is not blacklisted
< Server: Microsoft-IIS/7.5
< X-AspNet-Version: 2.0.50727
< X-Powered-By: ASP.NET
< Date: Thu, 11 Jun 2015 19:48:40 GMT
< Content-Length: 2615
<
100 3096 100 2615 100 481 4409 811 --:--:-- --:--:-- --:--:-- 4409
* Connection #22 to host wsf.cdyne.com left intact
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.o
rg/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetCityForecastByZIPRes
ponse xmlns="http://ws.cdyne.com/WeatherWS/"><GetCityForecastByZIPResult><Succes
s>true</Success><ResponseText>City Found</ResponseText><State>CA</State><City>Be
verly Hills</City><WeatherStationCity>Burbank</WeatherStationCity><ForecastResul
t><Forecast><Date>2014-09-30T00:00:00</Date><WeatherID>4</WeatherID><Desciption>
Sunny</Desciption><Temperatures><MorningLow /><DaytimeHigh>83</DaytimeHigh></Tem
peratures><ProbabilityOfPrecipiation><Nighttime /><Daytime>00</Daytime></Probabi
lityOfPrecipiation></Forecast><Forecast><Date>2014-10-01T00:00:00</Date><Weather
ID>4</WeatherID><Desciption>Sunny</Desciption><Temperatures><MorningLow>61</Morn
ingLow><DaytimeHigh>84</DaytimeHigh></Temperatures><ProbabilityOfPrecipiation><N
ighttime>00</Nighttime><Daytime>00</Daytime></ProbabilityOfPrecipiation></Foreca
st><Forecast><Date>2014-10-02T00:00:00</Date><WeatherID>4</WeatherID><Desciption
>Sunny</Desciption><Temperatures><MorningLow>64</MorningLow><DaytimeHigh>97</Day
timeHigh></Temperatures><ProbabilityOfPrecipiation><Nighttime>00</Nighttime><Day
time>00</Daytime></ProbabilityOfPrecipiation></Forecast><Forecast><Date>2014-10-
03T00:00:00</Date><WeatherID>4</WeatherID><Desciption>Sunny</Desciption><Tempera
tures><MorningLow>66</MorningLow><DaytimeHigh>101</DaytimeHigh></Temperatures><P
robabilityOfPrecipiation><Nighttime>00</Nighttime><Daytime>00</Daytime></Probabi
lityOfPrecipiation></Forecast><Forecast><Date>2014-10-04T00:00:00</Date><Weather
ID>4</WeatherID><Desciption>Sunny</Desciption><Temperatures><MorningLow>67</Morn
ingLow><DaytimeHigh>102</DaytimeHigh></Temperatures><ProbabilityOfPrecipiation><
Nighttime>00</Nighttime><Daytime>00</Daytime></ProbabilityOfPrecipiation></Forec
ast><Forecast><Date>2014-10-05T00:00:00</Date><WeatherID>4</WeatherID><Desciptio
n>Sunny</Desciption><Temperatures><MorningLow>67</MorningLow><DaytimeHigh>98</Da
ytimeHigh></Temperatures><ProbabilityOfPrecipiation><Nighttime>00</Nighttime><Da
ytime>00</Daytime></ProbabilityOfPrecipiation></Forecast><Forecast><Date>2014-10
-06T00:00:00</Date><WeatherID>4</WeatherID><Desciption>Sunny</Desciption><Temper
atures><MorningLow>65</MorningLow><DaytimeHigh>95</DaytimeHigh></Temperatures><P
robabilityOfPrecipiation><Nighttime>00</Nighttime><Daytime>00</Daytime></Probabi
lityOfPrecipiation></Forecast></ForecastResult></GetCityForecastByZIPResult></Ge
tCityForecastByZIPResponse></soap:Body></soap:Envelope>
[INFO ][SERVER] [Thread 7980] [11/06/2015 16:47:26] Thread finished (carlos, TEC-CARLOS)
[INFO ][SERVER] [Thread 8824] [11/06/2015 16:47:28] Debugger finished (carlos, tec-carlos)
É possível habilitar um log mais detalhado do que está sendo enviado, no nível do protocolo HTTP, criando uma variável de ambiente chaamda WSDLPULL_TRACEFILE, case sensitive, que conterá o caminho na máquina do Application Server, que conterá o arquivo de log que receberá os dados. Quando não existe, o arquivo é criado, senão é acrescentado ao final dele as informações. Toda comunicação HTTP será logada nesse arquivo.