30/09/2018, 22:03

Lấy đồng thời link redirect và html của 1 url?

Vấn đề là e có 2 file
a.php
echo 'Text A'; header('location: b.php');
b.php
echo 'Text B';

vấn đề là e muốn lấy html và link b.php từ file a.php (mục đích là để nếu có xuất hiện chuyển hướng thì load xong file a.php sẽ load tiếp file b.php)

  • nếu e dùng request.AllowAutoRedirect = false; để chặn chuyển hướng thì chỉ lấy được html, ko lấy được link chuyển hướng
  • nếu e dùng request.AllowAutoRedirect = true thì bắt được link chuyển hướng, ko lấy được html ??

Có ai hiểu vấn đề e đang trình bày ko ạ ? Bác nào có cách giải quyết giúp e với. Tks

Code đầy đủ:

using System;
using System.Net;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create("a.php");
                request.Method = "GET";
                request.AllowAutoRedirect = false;
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                string html = new StreamReader(response.GetResponseStream()).ReadToEnd();
                Console.WriteLine(response.ResponseUri + "
" + html);
            }
            catch(WebException e)
            {
                Console.WriteLine(e.Status);
            }
            Console.ReadKey();
        }
    }
}
Sáng Béo viết 00:15 ngày 01/10/2018

Mình chưa làm bao giờ nhưng nghĩ là để cái kia là false load xong file a rồi để lại true để lấy link sau đó load file b

Củ Chuối viết 00:18 ngày 01/10/2018

Get ResponseHeaders đc ko bạn, trong đó sẽ có Header Location.

Phạm Dũng viết 00:16 ngày 01/10/2018

@htwap để lại true thì có tác dụng gì nữa bác ?? trong khi response nó lấy xong html rồi @@

Phạm Dũng viết 00:15 ngày 01/10/2018

Mệt ghê, cuối cùng cũng tìm ra lời giải. Kém tiếng anh ngâm cái trang microsoft mãi mới ra @@
up cho ae nào cần
string html = new StreamReader(response.GetResponseStream()).ReadToEnd(); var headers = response.Headers; Console.WriteLine(headers["Location"] + "\n" + html);
ban đầu writeLine response.Headers thấy ko có location nên ko nghĩ dùng Headers được

Sáng Béo viết 00:14 ngày 01/10/2018

@htwap để lại true thì có tác dụng gì nữa bác ?? trong khi response nó lấy xong html rồi @@

à, thì ý e là làm lại 1 request để lấy link b.

Bài liên quan
0