谁知道怎么读取session吗?
需要下载一个文件,这个文件需要用户名密码验证。我用webclient进行下载的时候就会出错,有谁知道这种情况怎么解决吗?
能不能让我的程序读取出来当前session里的信息?然后加载到我的webclient的httprequest里面
或者说,如果我知道用户名和密码,怎么填写进去?
我这里有些code,不过貌似不能用
没有验证的时候下载没问题
请帮我看看吧。
给点hint也好
private void download()--------------------编程问答-------------------- upup --------------------编程问答-------------------- 顶起来 --------------------编程问答-------------------- 使用cookie的思路还是没有问题的。 --------------------编程问答-------------------- System.Web.SessionState.HttpSessionState mys=HttpContext.Current.Session;
{
CookieWebClient web = new CookieWebClient();
Uri uri = new Uri("http://www.xxxxxxxxxxxxxxx.com/admin/products/export");
web.Cookies = PCTools.CookieManger.GetUriCookieContainer(uri);
string local = "product.csv";
try
{
web.DownloadFile(uri, local);
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
}
public class CookieWebClient : WebClient
{
// Cookie 容器
private CookieContainer cookieContainer;
/// <summary>
/// 创建一个新的 WebClient 实例。
/// </summary>
public CookieWebClient()
{
this.cookieContainer = new CookieContainer();
}
/// <summary>
/// 创建一个新的 WebClient 实例。
/// </summary>
/// <param name="cookie">Cookie 容器</param>
public CookieWebClient(CookieContainer cookies)
{
this.cookieContainer = cookies;
}
/// <summary>
/// Cookie 容器
/// </summary>
public CookieContainer Cookies
{
get
{
return this.cookieContainer;
}
set
{
this.cookieContainer = value;
}
}
/// <summary>
/// 返回带有 Cookie 的 HttpWebRequest。
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
if (request is HttpWebRequest)
{
HttpWebRequest httpRequest = request as HttpWebRequest;
httpRequest.CookieContainer = cookieContainer;
}
else
{
Debug.Assert(false, "不是HttpWebRequest");
}
return request;
}
}
public class CookieManger
{
[DllImport("wininet.dll", SetLastError = true)]
public static extern bool InternetGetCookie(string url, string cookieName, StringBuilder cookieData, ref int size);
public static CookieContainer GetUriCookieContainer(Uri uri)
{
CookieContainer cookies = null;
//定义Cookie数据的大小。
int datasize = 256;
StringBuilder cookieData = new StringBuilder(datasize);
if (!InternetGetCookie(uri.ToString(), null, cookieData, ref datasize))
{
if (datasize < 0) return null;
// 确信有足够大的空间来容纳Cookie数据。
cookieData = new StringBuilder(datasize);
if (!InternetGetCookie(uri.ToString(), null, cookieData, ref datasize)) return null;
}
if (cookieData.Length > 0)
{
cookies = new CookieContainer();
cookies.SetCookies(uri, cookieData.ToString().Replace(';', ','));
}
return cookies;
}
}
}[
mys["username"] --------------------编程问答-------------------- Fiddler2 提供了免费的API, 我想对你的这个可能会有些帮助。抓cookie。 --------------------编程问答-------------------- 顶起来,等待高人解决 --------------------编程问答-------------------- 自己顶~~
--------------------编程问答-------------------- ?
你到底是要读取session 还还是cookie
补充:.NET技术 , C#