1

外部サーバーからメッセージ ID とステータスを QueryString として受け入れる webapp があります。webapp を新しいサーバーに移行していますが、古いサーバーがまだ更新を待っている場合に備えて、クライアントを移行できるようになるまで、新しいサーバーが QueryString を古いサーバーに転送する必要があります。

外部 Web サイトが ?MSGID=12345678&RESPONSE=0 で Web アプリケーションを呼び出します

例えば:

http://dlrnotify.newserver.com/GetResponse.aspx?MSGID=12345678&RESPONSE=0

メッセージをローカルで処理し、要求を古いサーバーに転送するには、GetResponse.aspx の背後にあるコードが必要です。たとえば、次のように呼び出します。

http://dlrnotify.oldserver.com/GetResponse.aspx?MSGID=12345678&RESPONSE=0

アプリからクエリ文字列を渡すためだけに、ユーザーを古い Web サーバーにリダイレクトしたくありません。

呼び出すことで QueryString を取得できResponse.QueryString.ToString()ます。何も混乱させることなく、それを古いサーバーに投稿する方法を知る必要があります。

これがばかげた質問である場合は申し訳ありません。私は Web アプリを頻繁に使用しないため、明らかに間違った検索用語を使用しています。

4

3 に答える 3

2

これには HttpWebRequest と HttpWebResponse を使用できます。以下は、これらの使用例です

  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 ページにデータを投稿する方法のサンプル コード

   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);
   }
于 2013-01-03T12:04:35.463 に答える
0

新しいサーバーでコード (プロセス メッセージ) を実行した後、手動でHttpWebRequestを生成します。これは、既に作成したものと同じクエリ文字列を使用して、古いサーバーに送信する必要があります。

于 2013-01-03T12:06:10.047 に答える
0

あなたの投稿と同じタスクがあります。しかし、それにはもう少しあります。2 つの Web アプリケーションがあり、1 つは asp.net に、もう 1 つは PHP にあります。どちらもユーザー プロファイルを作成します。ここでのタスクは、Asp.NET アプリケーションでユーザーを作成することであり、Asp.Net アプリから同じ情報を PHP アプリケーションに保存する必要があります。

そのために以下のコードを使用していますが、機能していません。それを見て、何が欠けているか教えてください。

        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("a@b.com");

            sb.AppendLine("Content-Disposition: form-data; name=\"password\"");
            sb.AppendLine("P@ssword");

            // 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 Web サイトはサード パーティであり、コードにはアクセスできません。

ありがとう、ジニ。

于 2013-04-16T18:03:17.523 に答える