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




go developer ebay (2)

Это то, что у меня есть до сих пор в моих уведомлениях.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
%>

Я пытаюсь получать уведомления транзакции 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 станет конечной точкой для 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