C# Zip

  • Thread starter Thread starter Aung
  • Start date Start date
A

Aung

Has anybody develop RFC1950 and RFC1951 compliant Zip utility?

Any pointer will be appreciated.
 
Hi,

We're not selling vaporware, Pete. The features are already
implemented, tested, and ready to use today.

Its easy to say something is expensive until you realize how much time
you spend trying to DIY. Xceed caters to developers that want
reliable, tested code that is well documented... so they can save
their time. After all, time is money. That's what the value of the
product is.

With Xceed Zip for .NET, you'll get complete documentation, lots of
samples, free tech support (try calling up the makers of the alternate
solution you talk of and see if they'll stop what they are doing to
help you until your problem is fixed), a web site with a knowledge
base, online forums dedicated to the product, new versions and updates
on a regular basis, and of couse, dozens upon dozens of features that
only we do and nobody else does... not to mention the fact that these
days we include all our other non-visual components and libraries in
the price of the component as well...

That's why we are developing an FTP library for .NET (plenty of free
solutions for that... How many actually work well and are full
featured?) and also why we made a Grid for .NET (why not just use the
included datagrid with Visual Studio .NET?!)

Take care,
Odi

Hi,


That's pretty damn expensive for a component that only does zip based
compression. The sharpziplib link posted before does other formats too and
is open source (extra features probably wouldn't be that difficult to
add/request -- someone on the team might even add them for you for less than
that xceed thing costs).

Pete

--
Alex Leblanc
Xceed Software Inc.
http://www.xceedsoft.com

Check out our advanced .NET grid and SmartUI controls

Email: (e-mail address removed) (remove the first 'x')
 
Whoa, Odi, be careful man! I think Microsoft owns the copyright on the
entire email you just wrote.

-- Joe
 
Hello,

I am having a problem with WebRequest class. I used the following code to
post some data to a page and retrive back the response. It works fine with
http:// connection. When i use that with https:// connection, it thrown an
exception "The underlying connection was closed: Could not establish trust
relationship with remote server.". I am using self sign certificate on the
web server and the root and CA certificates are installed on the client
machine using the following code.

your suggestions will be great appreciated.

Aung

public string postForm(string url, string postData)

{

string retStr="", tempStr;

HttpWebResponse result = null;

try

{

HttpWebRequest req = (HttpWebRequest) WebRequest.Create(url);

req.Method = "POST";

req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR
1.0.3705)";

req.ContentType = "application/x-www-form-urlencoded";

StringBuilder UrlEncoded = new StringBuilder();

Char[] reserved = {'?', '=', '&'};

byte[] SomeBytes = null;

if (postData != null)

{

int i=0, j;

while(i<postData.Length)

{

j=postData.IndexOfAny(reserved, i);

if (j==-1)

{

UrlEncoded.Append(HttpUtility.UrlEncode(postData.Substring(i,
postData.Length-i)));

break;

}

UrlEncoded.Append(HttpUtility.UrlEncode(postData.Substring(i, j-i)));

UrlEncoded.Append(postData.Substring(j,1));

i = j+1;

}

SomeBytes = Encoding.UTF8.GetBytes(UrlEncoded.ToString());

req.ContentLength = SomeBytes.Length;

Stream newStream = req.GetRequestStream();

newStream.Write(SomeBytes, 0, SomeBytes.Length);

newStream.Close();

}

else

{

req.ContentLength = 0;

}

result = (HttpWebResponse) req.GetResponse();

Stream ReceiveStream = result.GetResponseStream();

Encoding encode = System.Text.Encoding.GetEncoding("utf-8");

StreamReader sr = new StreamReader( ReceiveStream, encode );

Char[] read = new Char[256];

int count = sr.Read( read, 0, 256 );

while (count > 0)

{

tempStr = new String(read, 0, count);

retStr += tempStr;

count = sr.Read(read, 0, 256);

}

retStr.Trim();

}

catch (Exception e)

{

retStr = "Error!!";

}

finally

{

if ( result != null )

{

result.Close();

}

}

return retStr;

}
 
Best way to test your client is see if you can do the same from IE. Most of
the System.Net classes take configuration from IE behind the scenes. If it
doesn't work in IE and you do get it working, make sure to close all
instances of IE so the data persists before re-running the .NET application.
Some changes are considered dynamic and won't be written to the registry
until close.

Hopefully you find that IE won't connect either. I find it hard to believe
that .NET would have a more stringent implementation of SSL than IE. But it
is possible.

--
Justin Rogers
DigiTec Web Consultants, LLC.

Aung said:
Hello,

I am having a problem with WebRequest class. I used the following code to
post some data to a page and retrive back the response. It works fine with
http:// connection. When i use that with https:// connection, it thrown an
exception "The underlying connection was closed: Could not establish trust
relationship with remote server.". I am using self sign certificate on the
web server and the root and CA certificates are installed on the client
machine using the following code.

your suggestions will be great appreciated.

Aung

public string postForm(string url, string postData)

{

string retStr="", tempStr;

HttpWebResponse result = null;

try

{

HttpWebRequest req = (HttpWebRequest) WebRequest.Create(url);

req.Method = "POST";

req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR
1.0.3705)";

req.ContentType = "application/x-www-form-urlencoded";

StringBuilder UrlEncoded = new StringBuilder();

Char[] reserved = {'?', '=', '&'};

byte[] SomeBytes = null;

if (postData != null)

{

int i=0, j;

while(i<postData.Length)

{

j=postData.IndexOfAny(reserved, i);

if (j==-1)

{

UrlEncoded.Append(HttpUtility.UrlEncode(postData.Substring(i,
postData.Length-i)));

break;

}

UrlEncoded.Append(HttpUtility.UrlEncode(postData.Substring(i, j-i)));

UrlEncoded.Append(postData.Substring(j,1));

i = j+1;

}

SomeBytes = Encoding.UTF8.GetBytes(UrlEncoded.ToString());

req.ContentLength = SomeBytes.Length;

Stream newStream = req.GetRequestStream();

newStream.Write(SomeBytes, 0, SomeBytes.Length);

newStream.Close();

}

else

{

req.ContentLength = 0;

}

result = (HttpWebResponse) req.GetResponse();

Stream ReceiveStream = result.GetResponseStream();

Encoding encode = System.Text.Encoding.GetEncoding("utf-8");

StreamReader sr = new StreamReader( ReceiveStream, encode );

Char[] read = new Char[256];

int count = sr.Read( read, 0, 256 );

while (count > 0)

{

tempStr = new String(read, 0, count);

retStr += tempStr;

count = sr.Read(read, 0, 256);

}

retStr.Trim();

}

catch (Exception e)

{

retStr = "Error!!";

}

finally

{

if ( result != null )

{

result.Close();

}

}

return retStr;

}
 
A thing that I have found that can help is to implement a class based on
ICertificatePolicy that handles the CheckValidationResult method. If you
set an instance of your class to the ServicePointManager.CertificatePolicy
property, you can override the behavior of certificate handling errors.
Returning true will cause the system to ignore all errors, which is
sometimes helpful for testing (but a bad a idea for production code).

HTH,

Joe K.

Justin Rogers said:
Best way to test your client is see if you can do the same from IE. Most of
the System.Net classes take configuration from IE behind the scenes. If it
doesn't work in IE and you do get it working, make sure to close all
instances of IE so the data persists before re-running the .NET application.
Some changes are considered dynamic and won't be written to the registry
until close.

Hopefully you find that IE won't connect either. I find it hard to believe
that .NET would have a more stringent implementation of SSL than IE. But it
is possible.

--
Justin Rogers
DigiTec Web Consultants, LLC.

Aung said:
Hello,

I am having a problem with WebRequest class. I used the following code to
post some data to a page and retrive back the response. It works fine with
http:// connection. When i use that with https:// connection, it thrown an
exception "The underlying connection was closed: Could not establish trust
relationship with remote server.". I am using self sign certificate on the
web server and the root and CA certificates are installed on the client
machine using the following code.

your suggestions will be great appreciated.

Aung

public string postForm(string url, string postData)

{

string retStr="", tempStr;

HttpWebResponse result = null;

try

{

HttpWebRequest req = (HttpWebRequest) WebRequest.Create(url);

req.Method = "POST";

req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR
1.0.3705)";

req.ContentType = "application/x-www-form-urlencoded";

StringBuilder UrlEncoded = new StringBuilder();

Char[] reserved = {'?', '=', '&'};

byte[] SomeBytes = null;

if (postData != null)

{

int i=0, j;

while(i<postData.Length)

{

j=postData.IndexOfAny(reserved, i);

if (j==-1)

{

UrlEncoded.Append(HttpUtility.UrlEncode(postData.Substring(i,
postData.Length-i)));

break;

}

UrlEncoded.Append(HttpUtility.UrlEncode(postData.Substring(i, j-i)));

UrlEncoded.Append(postData.Substring(j,1));

i = j+1;

}

SomeBytes = Encoding.UTF8.GetBytes(UrlEncoded.ToString());

req.ContentLength = SomeBytes.Length;

Stream newStream = req.GetRequestStream();

newStream.Write(SomeBytes, 0, SomeBytes.Length);

newStream.Close();

}

else

{

req.ContentLength = 0;

}

result = (HttpWebResponse) req.GetResponse();

Stream ReceiveStream = result.GetResponseStream();

Encoding encode = System.Text.Encoding.GetEncoding("utf-8");

StreamReader sr = new StreamReader( ReceiveStream, encode );

Char[] read = new Char[256];

int count = sr.Read( read, 0, 256 );

while (count > 0)

{

tempStr = new String(read, 0, count);

retStr += tempStr;

count = sr.Read(read, 0, 256);

}

retStr.Trim();

}

catch (Exception e)

{

retStr = "Error!!";

}

finally

{

if ( result != null )

{

result.Close();

}

}

return retStr;

}
 
Egads!! BAD cross-poster - BAD!!

Anyhow, yes - this is exactly what the problem is. You can't programatically
specify a trust list (at least I haven't run across a way) - so even if you
log in with that account, and add the certificate authority -
programatically - it will still not trust that CA.

The ONLY way I've seen this or been able to get this to work (because I
needed to do the same thing) - is you have to get real certificates, like
from Verisign or Thawte..


Aung said:
Yes. i used IE before calling from my application. IE popup with a warning
message telling me that "certificate on the server is not the same name bla
bla. " and when i hit OK, i can view the SSL page with form.

my .NET application cannot.


Justin Rogers said:
Best way to test your client is see if you can do the same from IE.
Most
of
the System.Net classes take configuration from IE behind the scenes. If it
doesn't work in IE and you do get it working, make sure to close all
instances of IE so the data persists before re-running the .NET application.
Some changes are considered dynamic and won't be written to the registry
until close.

Hopefully you find that IE won't connect either. I find it hard to believe
that .NET would have a more stringent implementation of SSL than IE.
But
it
is possible.
thrown
an
exception "The underlying connection was closed: Could not establish trust
relationship with remote server.". I am using self sign certificate on the
web server and the root and CA certificates are installed on the client
machine using the following code.

your suggestions will be great appreciated.

Aung

public string postForm(string url, string postData)

{

string retStr="", tempStr;

HttpWebResponse result = null;

try

{

HttpWebRequest req = (HttpWebRequest) WebRequest.Create(url);

req.Method = "POST";

req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;
..NET
CLR
1.0.3705)";

req.ContentType = "application/x-www-form-urlencoded";

StringBuilder UrlEncoded = new StringBuilder();

Char[] reserved = {'?', '=', '&'};

byte[] SomeBytes = null;

if (postData != null)

{

int i=0, j;

while(i<postData.Length)

{

j=postData.IndexOfAny(reserved, i);

if (j==-1)

{

UrlEncoded.Append(HttpUtility.UrlEncode(postData.Substring(i,
postData.Length-i)));

break;

}

UrlEncoded.Append(HttpUtility.UrlEncode(postData.Substring(i, j-i)));

UrlEncoded.Append(postData.Substring(j,1));

i = j+1;

}

SomeBytes = Encoding.UTF8.GetBytes(UrlEncoded.ToString());

req.ContentLength = SomeBytes.Length;

Stream newStream = req.GetRequestStream();

newStream.Write(SomeBytes, 0, SomeBytes.Length);

newStream.Close();

}

else

{

req.ContentLength = 0;

}

result = (HttpWebResponse) req.GetResponse();

Stream ReceiveStream = result.GetResponseStream();

Encoding encode = System.Text.Encoding.GetEncoding("utf-8");

StreamReader sr = new StreamReader( ReceiveStream, encode );

Char[] read = new Char[256];

int count = sr.Read( read, 0, 256 );

while (count > 0)

{

tempStr = new String(read, 0, count);

retStr += tempStr;

count = sr.Read(read, 0, 256);

}

retStr.Trim();

}

catch (Exception e)

{

retStr = "Error!!";

}

finally

{

if ( result != null )

{

result.Close();

}

}

return retStr;

}
 
I was having the same issue using a MS Certificate Server . If you are using
you
own certificate authority to issue the certificate the problem lies in the
fact
that your client computer does not trust the issuing certificate authority.
Read
the section "Install Your Certification Authority's Certificate on the
Client"
from http://support.microsoft.com/default.aspx?scid=kb;en-us;324284 IE gives
you
the option to accept this discrepancy, but .net does not.

Tim Cartwright //Will write code for food


Drebin said:
Egads!! BAD cross-poster - BAD!!

Anyhow, yes - this is exactly what the problem is. You can't programatically
specify a trust list (at least I haven't run across a way) - so even if you
log in with that account, and add the certificate authority -
programatically - it will still not trust that CA.

The ONLY way I've seen this or been able to get this to work (because I
needed to do the same thing) - is you have to get real certificates, like
from Verisign or Thawte..


Aung said:
Yes. i used IE before calling from my application. IE popup with a warning
message telling me that "certificate on the server is not the same name bla
bla. " and when i hit OK, i can view the SSL page with form.

my .NET application cannot.


Justin Rogers said:
Best way to test your client is see if you can do the same from IE.
Most
of
the System.Net classes take configuration from IE behind the scenes.
If
it
doesn't work in IE and you do get it working, make sure to close all
instances of IE so the data persists before re-running the .NET application.
Some changes are considered dynamic and won't be written to the registry
until close.

Hopefully you find that IE won't connect either. I find it hard to believe
that .NET would have a more stringent implementation of SSL than IE.
But
it
is possible.

--
Justin Rogers
DigiTec Web Consultants, LLC.

Hello,

I am having a problem with WebRequest class. I used the following
code
to
post some data to a page and retrive back the response. It works
fine
with
http:// connection. When i use that with https:// connection, it
thrown
an
exception "The underlying connection was closed: Could not establish trust
relationship with remote server.". I am using self sign certificate
on
the
web server and the root and CA certificates are installed on the client
machine using the following code.

your suggestions will be great appreciated.

Aung

public string postForm(string url, string postData)

{

string retStr="", tempStr;

HttpWebResponse result = null;

try

{

HttpWebRequest req = (HttpWebRequest) WebRequest.Create(url);

req.Method = "POST";

req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET
CLR
1.0.3705)";

req.ContentType = "application/x-www-form-urlencoded";

StringBuilder UrlEncoded = new StringBuilder();

Char[] reserved = {'?', '=', '&'};

byte[] SomeBytes = null;

if (postData != null)

{

int i=0, j;

while(i<postData.Length)

{

j=postData.IndexOfAny(reserved, i);

if (j==-1)

{

UrlEncoded.Append(HttpUtility.UrlEncode(postData.Substring(i,
postData.Length-i)));

break;

}

UrlEncoded.Append(HttpUtility.UrlEncode(postData.Substring(i, j-i)));

UrlEncoded.Append(postData.Substring(j,1));

i = j+1;

}

SomeBytes = Encoding.UTF8.GetBytes(UrlEncoded.ToString());

req.ContentLength = SomeBytes.Length;

Stream newStream = req.GetRequestStream();

newStream.Write(SomeBytes, 0, SomeBytes.Length);

newStream.Close();

}

else

{

req.ContentLength = 0;

}

result = (HttpWebResponse) req.GetResponse();

Stream ReceiveStream = result.GetResponseStream();

Encoding encode = System.Text.Encoding.GetEncoding("utf-8");

StreamReader sr = new StreamReader( ReceiveStream, encode );

Char[] read = new Char[256];

int count = sr.Read( read, 0, 256 );

while (count > 0)

{

tempStr = new String(read, 0, count);

retStr += tempStr;

count = sr.Read(read, 0, 256);

}

retStr.Trim();

}

catch (Exception e)

{

retStr = "Error!!";

}

finally

{

if ( result != null )

{

result.Close();

}

}

return retStr;

}
 
I was trying to do that a few months ago and I still need it.
I didn't resolve the problem, I have my own certificates.
May you show what you did?

Thanks,
Gustavo.


Joe Kaplan (MVP - ADSI) said:
A thing that I have found that can help is to implement a class based on
ICertificatePolicy that handles the CheckValidationResult method. If you
set an instance of your class to the ServicePointManager.CertificatePolicy
property, you can override the behavior of certificate handling errors.
Returning true will cause the system to ignore all errors, which is
sometimes helpful for testing (but a bad a idea for production code).

HTH,

Joe K.

Justin Rogers said:
Best way to test your client is see if you can do the same from IE.
Most
of
the System.Net classes take configuration from IE behind the scenes. If it
doesn't work in IE and you do get it working, make sure to close all
instances of IE so the data persists before re-running the .NET application.
Some changes are considered dynamic and won't be written to the registry
until close.

Hopefully you find that IE won't connect either. I find it hard to believe
that .NET would have a more stringent implementation of SSL than IE.
But
it
is possible.
thrown
an
exception "The underlying connection was closed: Could not establish trust
relationship with remote server.". I am using self sign certificate on the
web server and the root and CA certificates are installed on the client
machine using the following code.

your suggestions will be great appreciated.

Aung

public string postForm(string url, string postData)

{

string retStr="", tempStr;

HttpWebResponse result = null;

try

{

HttpWebRequest req = (HttpWebRequest) WebRequest.Create(url);

req.Method = "POST";

req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;
..NET
CLR
1.0.3705)";

req.ContentType = "application/x-www-form-urlencoded";

StringBuilder UrlEncoded = new StringBuilder();

Char[] reserved = {'?', '=', '&'};

byte[] SomeBytes = null;

if (postData != null)

{

int i=0, j;

while(i<postData.Length)

{

j=postData.IndexOfAny(reserved, i);

if (j==-1)

{

UrlEncoded.Append(HttpUtility.UrlEncode(postData.Substring(i,
postData.Length-i)));

break;

}

UrlEncoded.Append(HttpUtility.UrlEncode(postData.Substring(i, j-i)));

UrlEncoded.Append(postData.Substring(j,1));

i = j+1;

}

SomeBytes = Encoding.UTF8.GetBytes(UrlEncoded.ToString());

req.ContentLength = SomeBytes.Length;

Stream newStream = req.GetRequestStream();

newStream.Write(SomeBytes, 0, SomeBytes.Length);

newStream.Close();

}

else

{

req.ContentLength = 0;

}

result = (HttpWebResponse) req.GetResponse();

Stream ReceiveStream = result.GetResponseStream();

Encoding encode = System.Text.Encoding.GetEncoding("utf-8");

StreamReader sr = new StreamReader( ReceiveStream, encode );

Char[] read = new Char[256];

int count = sr.Read( read, 0, 256 );

while (count > 0)

{

tempStr = new String(read, 0, count);

retStr += tempStr;

count = sr.Read(read, 0, 256);

}

retStr.Trim();

}

catch (Exception e)

{

retStr = "Error!!";

}

finally

{

if ( result != null )

{

result.Close();

}

}

return retStr;

}
 
Back
Top