2015-04-02 8 views
1

У меня есть страница aspx, которая просто печатает на экране все, что получает в качестве POST. Пара ключей/значений передается в свойство Text элемента управления Label и отображается как строка с разделителями-запятыми.Неисправность, получающая данные POST

Вот целая страница.

<%@ Page Language="C#" %> 
<%@ Import Namespace ="System.IO" %> 
<%@ Import Namespace ="System.Web" %> 
<%@ Import Namespace ="System.Net" %> 
<%@ Import Namespace ="System.Text" %> 

<script runat="server"> 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     string initialUrl = HttpContext.Current.Request.Url.AbsoluteUri; 
     string[] keys = Request.Form.AllKeys; 
     string keyString = "POST KEY-VALUE PAIRS RECEIVED: "; 

     for (int i = 0; i < keys.Length; i++) 
     { 
      keyString += keys[i] + "=" + HttpContext.Current.Request.Form[keys[i]] + ", "; 
     } 

     Label1.Text = keyString; 
    } 

</script> 

<!DOCTYPE html> 

<html> 
<head runat="server"> 
    <meta name="viewport" content="width=device-width" /> 
    <title></title> 
</head> 

<body> 
    <div> 
     <asp:label ID="Label1" runat="server" text="Label"></asp:label> 
    </div> 
</body> 
</html> 

Я использую Google Postman для его проверки. Когда я запускаю решение в режиме отладки с помощью Visual Studio 2013, отправьте ему сообщение на localhost с помощью Google Postman, он отлично работает. На странице отображаются пары ключ/значение.

Но когда я выталкиваю страницу на свой общий хостинг (в настоящее время с GoDaddy), а затем тестирую с помощью Google Postman, он не работает. Страница загружается, но пары ключ/значение не отображаются.

http://www.parseci.com/ipn.aspx

Кажется, что данные POST не принимаются на странице, когда он в прямом эфире на моем сайте GoDaddy, и я не могу понять, почему.

Техническая поддержка GoDaddy не помогла.

Что мне не хватает?

ОБНОВЛЕНИЕ: Я скопировал файл ipn.aspx на частном сервере и протестировал его в Postman, а также в Chrome Advanced Rest Client. Оба работали, как шарм, когда POSTing на странице слушателя на этой другой машине.

Таким образом, у меня есть успех на одном частном публичном веб-сервере, но не успех с GoDaddy в качестве хоста.

ответ

0

Решение было удалить 'WWW' из URL, получающего POST. Я изменил http://www.parseci.com/aspx.com на http://parseci.com/ipn.aspx, и POST прибыл и обработан правильно.

Для тех, кто имеет одинаковую проблему и работает над функциональной страницей прослушивателя IPN Paypal, это решение также работало с IPN-симулятором Paypal. Удалив «www» из URL-адреса, данного симулятору, он успешно отправил POST на мою страницу слушателя в первый раз.

0

Он отлично подходит для меня с клиентом Chrome Advanced Rest Client. Вы уверены, что используете Postman правильно и вводите параметры как параметры тела формы, а не параметры запроса или заголовки?

rest client screen shot

<!DOCTYPE html> 

<html> 
<head><meta name="viewport" content="width=device-width" /><title> 
</title></head> 

<body> 
    <div> 
     <span id="Label1">POST KEY-VALUE PAIRS RECEIVED: hello=nurse, </span> 
    </div> 
</body> 
</html> 

Примечание: Это кажется, что это только для отладки, но если вы держите эту страницу вокруг, вы можете кодировать или дезинфицировать значения, которые вы получаете. В противном случае ваш сайт может быть уязвим для атак типа XSS/CSRF Javascript.

EDIT

Пробовал Почтальон тоже это работает для меня.

Postman screen shot

+0

Я не уверен, как прикрепить изображение к комментарию, но в Postman есть три варианта: 1) form-data, 2) x-www-form-urlencoded и 3) raw. Я пробовал все три безрезультатно. –

+0

Конечной целью этой страницы является получение IPN Paypal.Я начал писать страницу, чтобы получать и обрабатывать начальный POST, который поступает из IPN Paypal, но я продолжал получать ошибки, поэтому я пытаюсь сначала подтвердить, что страница даже получает POST вообще. Итак, какова будет разница между клиентом Chrome Rest и тем, что Paypal отправляет? –

+0

Данные формы должны быть точными. обновлен с помощью снимка экрана Postman. – Barett

Смежные вопросы