web-services soap asp-classic query-string

web services - ¿Recibiendo notificaciones SOAP de la API de eBay en la variable ASP?



web-services asp-classic (2)

Esto es lo que tengo hasta ahora en mis notificaciones.asp. Cuando intento enviar una publicación básica de SOAP a través de Postman, no ocurre nada. ¿Esto parece que debería funcionar?

Probé esto sin las declaraciones If que buscaban encabezados SOAP, y publiqué solo datos de cadenas regulares y funciona. Entonces, la conversión de binario a cadena y salida a archivo está bien. Ahora solo necesito probarlo con las notificaciones de api de eBay. ;-)

<% Function BytesToStr(bytes) Dim Stream Set Stream = Server.CreateObject("Adodb.Stream") Stream.Type = 1 ''adTypeBinary Stream.Open Stream.Write bytes Stream.Position = 0 Stream.Type = 2 ''adTypeText Stream.Charset = "iso-8859-1" BytesToStr = Stream.ReadText Stream.Close Set Stream = Nothing End Function Dim isPost: isPost = (UCase(Request.ServerVariables("REQUEST_METHOD") & "") = "POST") Dim hasSoapAction ''Is it a HTTP POST? If isPost Then ''Do we have a SOAPACTION header? hasSoapAction = (Len(Request.ServerVariables("HEADER_SOAPACTION") & "") > 0) If hasSoapAction Then ''Process the notification here. ''Use Request.BinaryRead to read the SOAP If Request.TotalBytes > 0 Then Dim lngBytesCount, text lngBytesCount = Request.TotalBytes text = BytesToStr(Request.BinaryRead(lngBytesCount)) dim fs, tfile set fs=Server.CreateObject("Scripting.FileSystemObject") set tfile=fs.CreateTextFile("C:/inetpub/wwwroot/ASPtest/notifications.txt") tfile.WriteLine(text) tfile.Close set tfile=nothing set fs=nothing End If End If ''Let eBay know we have received and processing the message. Response.Status = "200 OK" Else ''Return method not allowed Response.Status = "405 Method Not Allowed" End If Response.End %>

Estoy tratando de recibir notificaciones de transacción api de eBay en una ASP alojada en un servidor web. Las notificaciones se envían como mensajes SOAP y se pueden enviar a una URL con una cadena de consulta. Las notificaciones deben responderse con HTTP 200 OK. Me gustaría que la notificación llegue a una variable para poder analizarla y enviarla a la siguiente parte del sistema.

http://developer.ebay.com/DevZone/guides/ebayfeatures/Notifications/Notifications.html#ReceivingPlatformNotifications

En la documentación mencionan que esto es posible, pero la muestra que brindan es la ruta de suscripción a un servidor de correo electrónico. Esta ASP no necesariamente necesitaría realizar solicitudes SOAP, solo aceptar mensajes SOAP de los servidores de eBay.

Estoy estudiando ASP, SOAP y cadenas de consulta, pero una pequeña guía sería realmente apreciada. ¡Gracias!


Esto debería ser bastante directo, su página ASP clásica se convierte en el punto final de la API de notificaciones de eBay (siempre que la haya configurado para enviar notificaciones y a qué URL enviarlas) .

Debería poder probar esto con una simple página Classic ASP

<% Dim isPost: isPost = (UCase(Request.ServerVariables("REQUEST_METHOD") & "") = "POST") Dim hasSoapAction ''Is it a HTTP POST? If isPost Then ''Do we have a SOAPACTION header (check both because ''it can be either HTTP_ or HEADER_ depending on IIS version)? hasSoapAction = ( _ Len(Request.ServerVariables("HEADER_SOAPACTION") & "") > 0 Or _ Len(Request.ServerVariables("HTTP_SOAPACTION") & "") > 0 _ ) If hasSoapAction Then ''Process the notification here. ''Use Request.BinaryRead to read the SOAP End If ''Let eBay know we have received and processing the message. Response.Status = "200 OK" Else ''Return method not allowed Response.Status = "405 Method Not Allowed" End If Response.End %>

También es posible que desee verificar REMOTE_HOST para asegurarse de que solo REMOTE_HOST mensajes para la fuente esperada (aunque esto no es a prueba de balas ya que la información puede ser falsificada ) .

Enlaces útiles

  • Accediendo al cuerpo de una solicitud (gran respuesta existente que explica cómo usar Request.BinaryRead() para leer el contenido y convertirlo en una cadena que luego puede usar en una variable o para analizar con XMLDocument.LoadXML() ).

  • ¿Cómo generar MD5 usando VBScript en ASP clásico? (Si desea ver una forma de verificar la firma MD5)