C# Zip

A

Aung

Has anybody develop RFC1950 and RFC1951 compliant Zip utility?

Any pointer will be appreciated.
 
A

Aung

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;

}
 
J

Justin Rogers

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;

}
 
J

Joe Kaplan \(MVP - ADSI\)

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;

}
 
D

Drebin

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;

}
 
T

Tim Cartwright

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;

}
 
F

Franco Gustavo

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;

}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,776
Messages
2,569,603
Members
45,189
Latest member
CryptoTaxSoftware

Latest Threads

Top