Árvore de páginas

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.

Exemplo de uso de verbose da TWsdlManager
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
Exemplo de exibição no console do TOTVS Application Server
[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.

  • Sem rótulos