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.