문제

나는 ASP.NET에서 전자 상거래 솔루션을 사용하고 있습니다. PayPal 웹사이트 결제 표준 서비스.그와 함께 나는 그들이 제공하는 서비스를 사용합니다(결제 데이터 전송)는 사용자가 결제를 완료한 후 다시 주문 정보를 전송합니다.마지막으로 해야 할 일은 POST 요청을 구문 분석하고 그 안에 정보를 유지하는 것입니다.HTTP 요청의 내용은 다음 형식입니다.

성공
first_name=제인+도
last_name=스미스
Payment_status=완료
payer_email=janedoesmith%40hotmail.com
Payment_gross=3.99
mc_currency=USD
custom=for+the+purchase+of+the+rare+book+Green+계란+%26+햄

기본적으로 나는 이 정보를 분석하고 이메일로 보내거나 DB에 저장하는 등 의미 있는 작업을 수행하고 싶습니다.내 질문은 구문 분석 자체가 수행되는 방식이 아니라 ASP.NET에서 원시 HTTP 데이터를 구문 분석하는 올바른 접근 방식이 무엇인지입니다.

도움이 되었습니까?

해결책

onload 이벤트에 이와 유사한 것이 포함됩니다.

if (Request.RequestType == "POST")
{
    using (StreamReader sr = new StreamReader(Request.InputStream))
    {
        if (sr.ReadLine() == "SUCCESS")
        {
            /* Do your parsing here */
        }
    }
}

그들은 (예:전체 웹페이지가 아님) 따라서 구문 분석을 마친 후에 이와 같은 작업을 수행할 수 있습니다.

Response.Clear();
Response.ContentType = "text/plain";
Response.Write("Thanks!");
Response.End();

업데이트:페이지 모델에서 많은 오버헤드를 방지하려면 일반 처리기(.ashx) 파일에서 이 작업을 수행해야 합니다.확인해 보세요 이 기사 .ashx 파일에 대한 자세한 내용은

다른 팁

사용 IHttpHandler 페이지 모델 오버헤드(필요하지 않음)를 피하고 이름 값 쌍을 직접 구문 분석할 필요가 없도록 Request.Form을 사용하여 값을 가져옵니다.PHP나 Classic ASP(또는 ASP.NET MVC)를 사용하고 있다고 가정해 보세요.;)

각 요청을 일부 파일에 저장하는 것이 좋습니다.

이렇게 하면 나중에 언제든지 실제 내용으로 돌아갈 수 있습니다.나중에 적대적인 엔디안, koi-8로 인코딩된 [...] 등을 발견하면 나에게 감사 인사를 전할 수 있습니다.

들어오는 데이터가 POST 형식으로 인코딩된 표준 형식인 경우 Request.Form 배열을 사용하면 모든 데이터를 처리하기 좋은 방식으로 제공할 수 있습니다.

그렇지 않다면 Request.InputStream을 사용하는 것 외에는 다른 방법을 볼 수 없습니다.

귀하의 질문을 올바르게 읽고 있다면 귀하가 다음을 찾고 있다고 생각합니다. 입력스트림 속성 요청 개체에.이는 Firehose 스트림이므로 재설정할 수 없다는 점을 명심하세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top