Uso del registro winHTTP para comprobar cómo obtener tráfico
Si el host genérico y el cliente se realizan correctamente, pero el host y el cliente reales siguen fallando, es posible que no se inicie la solicitud de metadatos. El registro winHTTP se puede usar para comprobar que los mensajes salientes se generan y envían correctamente.
Las aplicaciones cliente basadas en WSDAPI usan WinHTTP para conectarse a dispositivos. Los hosts de dispositivos basados en WSDAPI no usan WinHTTP. Además, algunos servidores proxy de terceros no usan WinHTTP. Al solucionar problemas de un host o proxy que no usa WinHTTP, omita este procedimiento de diagnóstico y siga los procedimientos descritos en Inspeccionar seguimientos de red para Exchange de metadatos HTTP.
El registro winHTTP no muestra todo el tráfico de nivel TCP. Vaya a Inspección de seguimientos de red para metadatos HTTP Exchange si el tráfico además del tráfico HTTP es de interés.
Para usar el registro de WinHTTP para comprobar Obtener tráfico
- Capture los registros de WinHTTP.
- Inicie Bloc de notas u otro procesador de texto. El editor de texto debe ejecutarse como administrador.
- Abra el archivo de registro WinHTTP.
- Compruebe que se enviaron las solicitudes HTTP y los mensajes de metadatos necesarios.
Si se encuentra un mensaje Get para el host en los registros winHTTP, las solicitudes de metadatos se envían a WinHTTP correctamente. Siga la solución de problemas siguiendo los procedimientos descritos en Inspección de seguimientos de red para Exchange de metadatos HTTP.
Si no se encuentra un mensaje Get para el host en los registros winHTTP, no se inicia la solicitud de metadatos. Esto puede ocurrir cuando el host publica XAddrs no válidos. Compruebe que los XAddrs del host cumplen las reglas de validación de XAddr.
Comprobación de que se enviaron las solicitudes HTTP y los mensajes de metadatos necesarios
Los siguientes eventos deben producirse para el intercambio correcto de metadatos:
- El cliente WSDAPI genera una solicitud HTTP saliente. Esta solicitud se envía al host WSDAPI.
- El cliente envía un mensaje Get al host.
Estos eventos se capturan en los registros winHTTP.
El siguiente fragmento de código de archivo de registro winHTTP muestra una solicitud HTTP saliente generada por un cliente WSDAPI.
16:51:47.893 ::*0000004* :: WinHttpSendRequest(0x36aae0, "", 0, 0x0, 0, 658, 0)
16:51:47.893 ::*0000004* :: WinHttpSendRequest() returning TRUE
16:51:47.897 ::*0000004* :: sending data:
16:51:47.897 ::*0000004* :: 226 (0xe2) bytes
16:51:47.897 ::*0000004* :: <<<<-------- HTTP stream follows below ----------------------------------------------->>>>
16:51:47.897 ::*0000004* :: POST /dbe17c74-3b21-4f52-addc-b84b444f73a0 HTTP/1.1
16:51:47.897 ::*0000004* :: Content-Type: application/soap+xml
16:51:47.897 ::*0000004* :: User-Agent: WSDAPI
16:51:47.897 ::*0000004* :: Host: 192.168.0.1:5357
16:51:47.897 ::*0000004* :: Content-Length: 658
16:51:47.897 ::*0000004* :: Connection: Keep-Alive
16:51:47.897 ::*0000004* :: Cache-Control: no-cache
16:51:47.897 ::*0000004* :: Pragma: no-cache
16:51:47.897 ::*0000004* ::
16:51:47.897 ::*0000004* ::
16:51:47.897 ::*0000004* :: <<<<-------- End ----------------------------------------------->>>>
El siguiente fragmento de código de archivo de registro WinHTTP muestra un mensaje Obtener . Este mensaje debe seguir inmediatamente la solicitud HTTP.
16:51:47.898 ::*0000004* :: WinHttpWriteData(0x36aae0, 0x11aa7c4, 658, 0x0)
16:51:47.899 ::*0000004* :: sending data:
16:51:47.899 ::*0000004* :: 658 (0x292) bytes
16:51:47.899 ::*0000004* :: <<<<-------- HTTP stream follows below ----------------------------------------------->>>>
16:51:47.899 ::*0000004* :: <?xml version="1.0" encoding="utf-8" ?>
16:51:47.899 ::*0000004* :: <soap:Envelope xmlns:soap="https://www.w3.org/2003/05/soap-envelope" xmlns:wsa="https://schemas.xmlsoap.org/ws/2004/08/addressing"><soap:Header><wsa:To>urn:uuid:dbe17c74-3b21-4f52-addc-b84b444f73a0</wsa:To><wsa:Action>https://schemas.xmlsoap.org/ws/2004/09/transfer/Get</wsa:Action><wsa:MessageID>urn:uuid:8506ac50-3646-4621-9680-86f484d87909</wsa:MessageID><wsa:ReplyTo><wsa:Address>https://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address></wsa:ReplyTo><wsa:From><wsa:Address>urn:uuid:b32467b5-e7ee-4ae3-8a8e-f5aa417c23b6</wsa:Address></wsa:From></soap:Header><soap:Body></soap:Body></soap:Envelope>
16:51:47.899 ::*0000004* :: <<<<-------- End ----------------------------------------------->>>>
16:51:47.899 ::*0000004* :: WinHttpWriteData() returning TRUE
El elemento Action (<wsa:Action>https://schemas.xmlsoap.org/ws/2004/09/transfer/Get</wsa:Action>
) identifica el mensaje como un mensaje Get . Compruebe que el valor del elemento To (por ejemplo, <wsa:To>urn:uuid:dbe17c74-3b21-4f52-addc-b84b444f73a0</wsa:To>
) coincide con el identificador de dispositivo anunciado por el host en los mensajes udp originales WS-Discovery. El identificador de dispositivo anunciado por el host se puede comprobar mediante el host de depuración de WSD. Para obtener más información, consulte Uso de un host genérico y un cliente para la detección de WS udp.
Además, la respuesta del host a la solicitud de metadatos se puede encontrar en los registros winHTTP del cliente. El host genera un mensaje GetResponse en respuesta al mensaje Get del cliente.
El siguiente fragmento de código de archivo de registro WinHTTP muestra un mensaje GetResponse entrante recibido por un cliente WSDAPI.
16:51:47.899 ::*0000004* :: WinHttpReceiveResponse(0x36aae0, 0x0)
16:51:47.899 ::*0000004* :: WinHttpReceiveResponse() returning TRUE
16:51:47.899 ::*Session* :: DllMain(0x73fc0000, DLL_THREAD_ATTACH, 0x0)
16:51:47.902 ::*0000004* :: received data:
16:51:47.902 ::*0000004* :: 1024 (0x400) bytes
16:51:47.902 ::*0000004* :: <<<<-------- HTTP stream follows below ----------------------------------------------->>>>
16:51:47.902 ::*0000004* :: HTTP/1.1 200
16:51:47.902 ::*0000004* :: Content-Type: application/soap+xml
16:51:47.902 ::*0000004* :: Server: Microsoft-HTTPAPI/2.0
16:51:47.902 ::*0000004* :: Date: Fri, 15 Jun 2007 23:51:47 GMT
16:51:47.905 ::*0000004* :: Content-Length: 2228
16:51:47.905 ::*0000004* ::
16:51:47.905 ::*0000004* :: <?xml version="1.0" encoding="utf-8" ?>
16:51:47.905 ::*0000004* :: <soap:Envelope xmlns:soap="https://www.w3.org/2003/05/soap-envelope" xmlns:wsa="https://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsx="https://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsdp="https://schemas.xmlsoap.org/ws/2006/02/devprof" xmlns:un0="http://schemas.microsoft.com/windows/pnpx/2005/10" xmlns:pub="http://schemas.microsoft.com/windows/pub/2005/07"><soap:Header><wsa:To>https://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To><wsa:Action>https://schemas.xmlsoap.org/ws/2004/09/transfer/GetResponse</wsa:Action><wsa:MessageID>urn:uuid:2884cbcc-2848-4c35-9327-5ab5451a8729</wsa:MessageID><wsa:RelatesTo>urn:uuid:8506ac50-3646-4621-9680-86f484d87909</wsa:RelatesTo></soap:Header><soap:Body><wsx:Metadata><wsx:MetadataSection Dialect="https://schemas.xmlsoap.org/ws/2006/02/devprof/ThisDevice"><wsdp:ThisDevice><wsd
16:51:47.905 ::*0000004* :: <<<<-------- End ----------------------------------------------->>>>
El elemento Action (<wsa:Action>https://schemas.xmlsoap.org/ws/2004/09/transfer/GetResponse</wsa:Action>
) identifica el mensaje como un mensaje GetResponse . Compruebe que el valor del elemento RelatesTo del mensaje GetResponse coincide con el valor del elemento MessageID del mensaje Get . En este ejemplo, el valor del elemento RelatesTo (<wsa:RelatesTo>urn:uuid:8506ac50-3646-4621-9680-86f484d87909</wsa:RelatesTo>
) coincide con el valor del elemento MessageID del mensaje Get (<wsa:MessageID>urn:uuid:8506ac50-3646-4621-9680-86f484d87909</wsa:MessageID>
).
Temas relacionados