转发查询字符串到另一个服务器
我有一个接受的MessageID和状态从外部服务器查询字符串web应用程序。我正在将webapp迁移到新的服务器,但我需要新的服务器将QueryString转发到旧服务器,以防旧服务器仍在等待更新,直到我可以迁移客户端。转发查询字符串到另一个服务器
外部网站叫我的webapp与MSGID = 12345678 &响应= 0
如:
http://dlrnotify.newserver.com/GetResponse.aspx?MSGID=12345678&RESPONSE=0
我需要我的身后GetResponse.aspx代码在本地处理的消息,然后转发请求到旧服务器。例如,美其名曰:
http://dlrnotify.oldserver.com/GetResponse.aspx?MSGID=12345678&RESPONSE=0
我真的不希望将用户重定向到旧的Web服务器,只是从我的应用程序通过查询字符串上。
我可以通过调用Response.QueryString.ToString()
我只需要知道如何张贴到旧服务器,而不扰乱任何事情的查询字符串。
很抱歉,如果这是一个愚蠢的问题,我不和Web应用程序经常工作,我明明使用了错误的搜索条件。
您可以使用HttpWebRequest和HttpWebResponse这一点。下面是一个例子使用有关如何使用HttpWebRequest的
Uri uri = new Uri("http://www.amazon.com/exec/obidos/search-handle-form/102-5194535-6807312");
string data = "field-keywords=ASP.NET 2.0";
if (uri.Scheme == Uri.UriSchemeHttp)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.Method = WebRequestMethods.Http.Post;
request.ContentLength = data.Length;
request.ContentType = "application/x-www-form-urlencoded";
StreamWriter writer = new StreamWriter(request.GetRequestStream());
writer.Write(data);
writer.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string tmp = reader.ReadToEnd();
response.Close();
Response.Write(tmp);
}
在新服务器上执行代码(处理消息)后,POST数据到远程网页thses
Uri uri = new Uri("http://www.microsoft.com/default.aspx");
if(uri.Scheme = Uri.UriSchemeHttp)
{
HttpWebRequest request = HttpWebRequest.Create(uri);
request.Method = WebRequestMethods.Http.Get;
HttpWebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string tmp = reader.ReadToEnd();
response.Close();
Response.Write(tmp);
}
示例代码,手动生成HttpWebRequest这应该是你的旧服务器与你已经想出来形成相同的查询字符串。
我有一个任务与您的帖子相同。但是还有一点。 由于我们有两个Web应用程序,一个在asp.net中,另一个在PHP中。我们都在创建用户配置文件。现在的任务是在Asp.NET应用程序中创建用户,我们需要从Asp.Net应用程序中将相同的信息保存在PHP应用程序中。
我使用为下面的代码,但它不是wroking,能否请您看看吧,让我知道我错过了什么。
CookieContainer cookies = new CookieContainer();
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(@"http://localhost/admin/config/popup_user_info_brand.php");
request.PreAuthenticate = true;
request.AllowWriteStreamBuffering = true;
request.CookieContainer = cookies; // note this
request.Method = "POST";
string boundary = System.Guid.NewGuid().ToString();
string Username = "admin";
string Password = "admin";
if (!string.IsNullOrEmpty(Username) && !string.IsNullOrEmpty(Password))
{
request.Credentials = new NetworkCredential(Username, Password);
request.ContentType = string.Format("multipart/form-data; boundary={0}", boundary);
StringBuilder sb = new StringBuilder();
sb.AppendLine("Content-Disposition: form-data; name=\"name\"");
sb.AppendLine("Singh");
sb.AppendLine("Content-Disposition: form-data; name=\"username\"");
sb.AppendLine("Singh123");
sb.AppendLine("Content-Disposition: form-data; name=\"email\"");
sb.AppendLine("[email protected]");
sb.AppendLine("Content-Disposition: form-data; name=\"password\"");
sb.AppendLine("[email protected]");
// This is sent to the Post
byte[] bytes = Encoding.UTF8.GetBytes(sb.ToString());
request.ContentLength = bytes.Length;
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Flush();
requestStream.Close();
using (WebResponse response = request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
HttpContext.Current.Response.Write(reader.ReadToEnd());
}
}
}
}
注意: - PHP网站是第三方,我们无法访问代码。
感谢, 海金妮。