Обрабатывать http пост-запрос - PullRequest
1 голос
/ 21 октября 2009

У меня есть следующий сценарий для реализации:

У меня есть веб-сайт ASP.NET. При нажатии кнопки на моем сайте пользователь перенаправляется на сторонний сайт. Когда пользователь выполняет какие-либо действия на этом стороннем сайте, он начинает отправлять http-запросы на мой сайт со специальным сообщением каждую минуту.

Теперь проблема в том, что я должен обрабатывать и обрабатывать эти запросы, но я не знаю, как это сделать. Обратите внимание, что запросы, отправленные со стороннего сайта, НЕ открывают мой сайт по запросу http post. Эти запросы являются своего рода фоновыми запросами, то есть они не открывают страницу напрямую, поэтому они должны обрабатываться с использованием другого подхода.

У меня есть решение на Java. Это называется сервлет. С помощью сервлета я могу делать то, что хочу в Java. Однако мне нужна та же функциональность в ASP.NET? У кого-нибудь есть решение для этого?

Большое спасибо!

P.S. Для справки, вот код Java для сервлета:

package payment;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import beans.action.PaymentBean;

public class EPayRequestCatcher extends javax.servlet.http.HttpServlet
implements javax.servlet.Servlet{
    static final long serialVersionUID = 1L;

    public EPayRequestCatcher() {
        super();
    }

    protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException{

        doPost(request, response);
    }

    protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException{

        String encoded = request.getParameter("encoded");
        PaymentUtil util = new PaymentUtil();
        if (encoded != null) {
            String decoded = util.getDecodedB64Data(encoded);
            int invStart = decoded.indexOf("=") + 1;
            int invEnd = decoded.indexOf(":", invStart);
            String invoice = decoded.substring(invStart, invEnd);
            System.out.println("" + invoice);
            String checksum = request.getParameter("checksum");
            PaymentBean bean = new PaymentBean();
            String responseStatus = bean.getEpayRequest(encoded, checksum);
            if (!responseStatus.equals("")) {
                String responseData = "INVOICE=" + invoice + ":STATUS=" + responseStatus + "\n";
                System.out.println(responseData);
                response.getWriter().append(responseData);
            }
        }
        else {
            return;
        }
    }
}

1 Ответ

0 голосов
/ 21 октября 2009

TheVisitor,

если я правильно понял, внешний веб-сайт отправит некоторые данные на ваш сайт ASP.NET; вы (вероятно) определите страницу для получения этого сообщения и не знаете, как с этим справиться, верно?

Ну, вы можете попробовать что-то вроде:

protected void Page_Load(object sender, EventArgs e)
{
    string encoded = Request["encoded"];
    string checksum = Request["checksum"];

    // do stuff

    Response.Write("some response");
}

Этого может быть достаточно, в зависимости от ваших требований.

НТН

...