web services - tool - Получение уведомлений SOAP из eBay api в переменную ASP?




go developer ebay (2)

Я пытаюсь получать уведомления транзакции ebay api в ASP, размещенные на веб-сервере. Уведомления отправляются как сообщения SOAP и могут быть отправлены на URL с строкой запроса. На уведомления должен быть отправлен HTTP 200 OK. Я хотел бы, чтобы уведомление было помещено внутри переменной, чтобы я мог ее разобрать и отправить в следующую часть системы.

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

В документации упоминается, что это возможно, но образец, который они дают, идет по пути подписки на почтовый сервер. Этот ASP не обязательно должен делать запросы SOAP, просто принимать сообщения SOAP с серверов ebay.

Я изучаю ASP, SOAP и строки запросов, но небольшое руководство будет действительно оценено. Благодаря!


Это то, что у меня есть до сих пор в моих уведомлениях.asp. Когда я пытаюсь отправить ему базовую запись SOAP через Почтальон, ничего не происходит. Означает ли это, что это должно сработать?

Я протестировал это без инструкций If, проверяющих заголовки SOAP, и я опубликовал только регулярные строковые данные, и он работает. Таким образом, преобразование двоичных файлов в строку и вывод в файл - все это хорошо. Теперь мне просто нужно проверить его с помощью реальных уведомлений ebay api. ;-)

<%
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
%>

Это должно быть довольно прямолинейно, ваша классическая страница ASP станет конечной точкой для API уведомлений eBay (если вы настроили ее для отправки уведомлений и какого URL-адреса для их отправки) .

Вы должны быть в состоянии проверить это с помощью простой классической страницы 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
%>

Вы также можете проверить REMOTE_HOST чтобы убедиться, что вы только отправляете сообщения для ожидаемого источника (это не пуленепробино, хотя, поскольку информация может быть подделана ) .

Полезные ссылки

  • Доступ к телу запроса (большой существующий ответ, в котором объясняется, как использовать Request.BinaryRead() для чтения содержимого и преобразования его в строку, которую вы затем можете использовать в переменной или для синтаксического анализа с XMLDocument.LoadXML() ).

  • Как создать MD5 с помощью VBScript в классическом ASP? (Если вы хотите посмотреть способ проверки подписи MD5)







query-string