2013-11-08 4 views
2

Привет, У меня есть требование иметь дело с внешним API в приложении MY ASP.Net.ASP .Net, Перенаправление на внешнюю страницу во время данных POSTING

При нажатии на кнопку в приложении я должен перенаправить пользователя на внешний URL одновременно, указав некоторые учетные данные пользователя (имя пользователя, пароль), чтобы разрешить доступ к нему (внешняя сторонняя страница).

Если я попытаюсь получить доступ к этой внешней странице без размещения учетных данных (просто перенаправление), я не смогу просмотреть нужную страницу и не опубликует сообщение об ошибке с неверными учетными данными (со сторонней страницы).

Пусть следующее являются информация

1. URL need to access : https://externalurl.com/external-page.asp 
2. username   : myusername 
3. password   : mypassword 
  • Если я сделать простое представление HTML формы это работает блестяще, как следует.

enter image description here

Нет Идея о том, как сделать это в C# код в ASP .Net.

Я могу опубликовать данные с использованием API-интерфейсов WebRequest, но не может перенаправить в тот же сеанс. Если кто-то может помочь в этом, это будет здорово. Заранее спасибо...!!!

редактирует ...

  1. В моем случае я не могу использовать яваскрипт или любой сторону клиента сценариев, чтобы сделать это.

  2. В принципе, мне не нужно читать какой-либо ответ на мои данные POST. Мне нужно перенаправить на этой странице (Внешнего место при размещении информации)

+0

Попытайтесь использовать этот класс WebClient – user1956570

+0

Почему решение для формальной публикации недостаточно? Без сценариев на стороне клиента я вижу это как единственный способ, если вы не используете свой сервер в качестве прокси-сервера между клиентом и внешним сервером. Другими словами, вы не будете перенаправлять клиента, а выступать в роли среднего человека, который связывается с обеими сторонами (внешним сервером и клиентом). – mikey

+0

Привет, Майк, Да, я готов использовать отправку формы, если это невозможно сделать с любыми API-интерфейсами ASP.Net. Но значения имени пользователя и пароля должны быть динамически настроены в соответствии с разными пользователями. Бит-конфуция о том, как это сделать здесь. Если вы можете объяснить бит подробно, это замечательно. Спасибо .... – JibW

ответ

0

Вы можете сделать это с HttpWebRequest, но вам нужно кэшировать учетные данные, чтобы они получают прошли с каждым запросом, а не только первый; как это:

// Set queryUrl to your URL, either hard-coded or passed in 
HttpWebRequest req = WebRequest.Create(queryUrl) as HttpWebRequest; 

// Set your credentials 
NetworkCredential cred = new NetworkCredential(username, pwd, domain); 

// Setup cache to store your credentials for future requests 
var cache = new CredentialCache {{queryUrl, "Ntlm", cred}}; 
req.Credentials = cache; 

HttpWebResponse response = req.GetResponse() as HttpWebResponse; 
0

Делай так, чтобы ваша кнопка

<asp:Button ID="Button1" PostBackUrl="https://externalurl.com/external-page.asp" runat="server" Text="Submit" />

Надежда это ясно

http://msdn.microsoft.com/en-us/library/ms178140%28v=vs.100%29.ASPX

+1

Я пробовал это, но как публиковать данные таким образом? В моем случае «имя пользователя: myusername» И «password: mypassword» – JibW

+0

имеют всего 2 текстовых поля и кнопку и убедитесь, что идентификатор клиента в текстовом поле соответствует «имени пользователя» и паролю. вы можете попробовать установить режим clientid на статический. или использовать jquery, как описано здесь http://stackoverflow.com/questions/4350674/passing-variables-with-post-to-another-page-with-jquery – Ratna

+0

Я только что сделал это. Просто создал два текстовых поля и назвал поля идентификатора точно так же и добавил свойство PostBackUrl. Он пытается получить доступ к местоположению, но данные не публикуются ... Поэтому я вижу сообщение об ошибке, когда вижу с обычным перенаправлением .... – JibW

0

Вы можете установить метод формы и действия в точности как у вас есть это сейчас. Или используйте postbackURL на кнопке.

Проблема заключается в том, чтобы установить имя на элементах, чтобы их можно было отправить. Вы должны использовать javascript для установки скрытых полей. Поскольку .net изменяет свойство «name» отображаемых элементов на элементах управления на стороне сервера.

Итак, на клиентской стороне нажмите кнопку кнопки, вы можете установить значения скрытых полей (как и те, что в вашем вопросе), для любых значений, которые вам нужны. И, когда форма отправляется, они будут опубликованы с именами.

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