[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Dotgnu-pnet-commits] pnetlib/System/Net HttpWebRequest.cs, 1.19, 1.20 H
From: |
Rhys Weatherley <address@hidden> |
Subject: |
[Dotgnu-pnet-commits] pnetlib/System/Net HttpWebRequest.cs, 1.19, 1.20 HttpWebResponse.cs, 1.6, 1.7 |
Date: |
Thu, 20 Nov 2003 00:11:11 +0000 |
Update of /cvsroot/dotgnu-pnet/pnetlib/System/Net
In directory subversions:/tmp/cvs-serv16314/System/Net
Modified Files:
HttpWebRequest.cs HttpWebResponse.cs
Log Message:
Add support for HTTP redirects.
Index: HttpWebResponse.cs
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnetlib/System/Net/HttpWebResponse.cs,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** HttpWebResponse.cs 18 Jul 2003 20:12:32 -0000 1.6
--- HttpWebResponse.cs 20 Nov 2003 00:11:08 -0000 1.7
***************
*** 221,230 ****
}
- /* TODO : clarify how redirects work */
public override Uri ResponseUri
{
get
{
! return req.Address;
}
}
--- 221,239 ----
}
public override Uri ResponseUri
{
get
{
! if(code==HttpStatusCode.Redirect ||
! code==HttpStatusCode.MovedPermanently ||
! code==HttpStatusCode.Moved ||
! code==HttpStatusCode.MultipleChoices ||
! code==HttpStatusCode.Found ||
! code==HttpStatusCode.SeeOther ||
! code==HttpStatusCode.TemporaryRedirect)
! {
! return new Uri(this.Headers["Location"]);
! }
! return null;
}
}
Index: HttpWebRequest.cs
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnetlib/System/Net/HttpWebRequest.cs,v
retrieving revision 1.19
retrieving revision 1.20
diff -C2 -d -r1.19 -r1.20
*** HttpWebRequest.cs 14 Nov 2003 05:04:31 -0000 1.19
--- HttpWebRequest.cs 20 Nov 2003 00:11:08 -0000 1.20
***************
*** 75,85 ****
internal HttpWebRequest(Uri uri)
{
- this.address=uri;
this.originalUri=uri;
- this.isSecured=String.Equals(uri.Scheme,Uri.UriSchemeHttps);
this.method="GET";
this.headers.SetInternal ("Host", uri.Authority);
this.headers.SetInternal ("Date",
DateTime.Now.ToUniversalTime().ToString(format));
- this.headers.SetInternal ("User-Agent","DotGNU Portable.net");
}
--- 75,91 ----
internal HttpWebRequest(Uri uri)
{
this.originalUri=uri;
this.method="GET";
+ this.headers.SetInternal ("User-Agent","DotGNU Portable.net");
+ SetAddress(uri);
+ }
+
+ internal void SetAddress(Uri uri)
+ {
+ CheckHeadersSent(); /* I know this never gets called , but
better safe than sorry */
+ this.address=uri;
+ this.isSecured=String.Equals(uri.Scheme,Uri.UriSchemeHttps);
this.headers.SetInternal ("Host", uri.Authority);
this.headers.SetInternal ("Date",
DateTime.Now.ToUniversalTime().ToString(format));
}
***************
*** 988,991 ****
--- 994,998 ----
private HttpAuthState proxy;
private HttpAuthState http;
+ private int redirections;
public HttpController(HttpWebRequest request)
***************
*** 1000,1003 ****
--- 1007,1011 ----
}
this.proxy=HttpAuthState.NoAuth;
+ redirections=0;
}
/* returns this WebRequest or a new one.
***************
*** 1067,1072 ****
case HttpStatusCode.Redirect:
{
! /* TODO */
}
break;
--- 1075,1096 ----
case HttpStatusCode.Redirect:
+ case HttpStatusCode.Moved :
+ case HttpStatusCode.MultipleChoices :
+ case HttpStatusCode.SeeOther :
+ case HttpStatusCode.TemporaryRedirect:
+ /* case HttpStatusCode.Found : // Duplicate */
+ /* case HttpStatusCode.MovedPermanently : //
Duplicate */
{
! Uri newUri=response.ResponseUri;
! if(request.allowAutoRedirect &&
newUri!=null &&
!
redirections<request.MaximumAutomaticRedirections &&
! (request.Method=="GET"
|| request.Method=="HEAD"))
! {
! /* ok redirect it */
! request.ResetRequest();
!
request.SetAddress(newUri);
! redirections++;
! }
! return request;
}
break;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Dotgnu-pnet-commits] pnetlib/System/Net HttpWebRequest.cs, 1.19, 1.20 HttpWebResponse.cs, 1.6, 1.7,
Rhys Weatherley <address@hidden> <=
- Prev by Date:
[Dotgnu-pnet-commits] pnetlib ChangeLog,1.1477,1.1478
- Next by Date:
[Dotgnu-pnet-commits] treecc ChangeLog, 1.90, 1.91 context.c, 1.6, 1.7 gen_cpp.c, 1.7, 1.8 gen_cs.c, 1.3, 1.4 gen_java.c, 1.4, 1.5 info.h, 1.11, 1.12 options.c, 1.9, 1.10
- Previous by thread:
[Dotgnu-pnet-commits] pnetlib ChangeLog,1.1477,1.1478
- Next by thread:
[Dotgnu-pnet-commits] treecc ChangeLog, 1.90, 1.91 context.c, 1.6, 1.7 gen_cpp.c, 1.7, 1.8 gen_cs.c, 1.3, 1.4 gen_java.c, 1.4, 1.5 info.h, 1.11, 1.12 options.c, 1.9, 1.10
- Index(es):