回 帖 发 新 帖 刷新版面

主题:想使用webrequest下载某网页的内容,但是每次都只能下载到要我登陆的页面,该如何解决?

这是我的源代码:

                 // Create a request for the URL.   
    //             WebRequest^ request = WebRequest::Create( strURL );
                 HttpWebRequest^ request = dynamic_cast<HttpWebRequest^>(WebRequest::Create( strURL ));
                 // If required by the server, set the credentials.
                 request->Credentials = CredentialCache::DefaultCredentials;
                 request->CookieContainer = gcnew CookieContainer;
             // Get the response.
                 HttpWebResponse^ response = dynamic_cast<HttpWebResponse^>(request->GetResponse());
                 response->Cookies = request->CookieContainer->GetCookies( request->RequestUri );
                 // Display the status.
                 System::Diagnostics::Trace::WriteLine( response->StatusDescription );
             // Get the stream containing content returned by the server.
                 Stream^ dataStream = response->GetResponseStream();
                 // Open the stream using a StreamReader for easy access.
                 StreamReader^ reader = gcnew StreamReader( dataStream, System::Text::Encoding::Default );//这里第二个参数很重要,不然中文的容易返回乱码
                 // Read the content.
                 String^ responseFromServer = reader->ReadToEnd();
                 // Display the content.
                 System::Diagnostics::Trace::WriteLine( responseFromServer );
                 System::Diagnostics::Trace::WriteLine( "That's ALL" );

每次都只能返回要求我登陆的页面,即使我已经在浏览器里登录过了也不行。但是如果直接把strURL的内容复制到浏览器里,却可以打开登录后实际的叶面。也就是说,实际上,我的登陆信息已经保存在了本机的某个位置,浏览器把它找了出来,并且用它来顺利的访问这个网站,但是我并不知道这一步是怎么做的。

回复列表 (共2个回复)

沙发

你这样做当然不行,因为它只是从服务端返回的HTML的代码。
想要实现你这样的功能,好像。NET里面有一个COOKIES的什么来着,我也不太清楚,查一下MSDN。呵呵

板凳

谢谢!!我也查过MSDN了,可能是查询方法有问题,我没有找到有帮助的东西。

我来回复

您尚未登录,请登录后再回复。点此登录或注册