Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / Languages / C# / August 2007

Tip: Looking for answers? Try searching our database.

URI parse exception

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
pedrito - 26 Aug 2007 18:08 GMT
I get exception trying to parse this URI:

http://-eeayr4mwvtw998.usercash.com/

But IE and Firefox have no problem opening it.

The parse exception is actually happening inside an HTTPWebRequest so I
guess there's no much I can do about it one wary or the other, unless
there's some way to encode it so that it still goes where it's supposed to
go but is actually parseable by the URI parser as well.

Any ideas?

Thanks.
Peter Bromberg [C# MVP] - 26 Aug 2007 18:54 GMT
Can you post some short but complete code sample to allow somebody to
reproduce the issue?
-- Peter
Recursion: see Recursion
site:  http://www.eggheadcafe.com
unBlog:  http://petesbloggerama.blogspot.com
BlogMetaFinder:    http://www.blogmetafinder.com

> I get exception trying to parse this URI:
>
[quoted text clipped - 10 lines]
>
> Thanks.
pedrito - 26 Aug 2007 18:57 GMT
Sure, this will throw the exception:

HttpWebRequest req =
HttpWebRequest.Create(@"http://-eeayr4mwvtw998.usercash.com/") as
HttpWebRequest;

I ought to mention, I'm using .NET 1.1. Maybe it was something fixed in a
later version...

> Can you post some short but complete code sample to allow somebody to
> reproduce the issue?
[quoted text clipped - 19 lines]
>>
>> Thanks.
Peter Duniho - 26 Aug 2007 19:47 GMT
> Sure, this will throw the exception:
>
[quoted text clipped - 4 lines]
> I ought to mention, I'm using .NET 1.1. Maybe it was something fixed in a
> later version...

Looks like.  I pasted the above line into an empty console application
(which is, by the way, the true "minimally complete" example of code
that might reproduce the issue :) ), and it executed fine without an
exception.

.NET 2.0 here.

Pete
pedrito - 27 Aug 2007 04:08 GMT
>> Sure, this will throw the exception:
>>
[quoted text clipped - 12 lines]
>
> Pete

Yeah, I had a feeling it'd probably work in 2.0... I'm wondering if I can
encode it somehow that the uri parser wouldn't choke... Oh well, it's not
horribly important. I'll play with it a bit and see what I can do...

Yeah, I thought of doing a console app, but I already had the Win app handy
(because I was using it to look at the HTML coming back from a url), so
easier to copy and paste that than create yet another test app.
Peter Duniho - 27 Aug 2007 04:58 GMT
> Yeah, I had a feeling it'd probably work in 2.0... I'm wondering if I can
> encode it somehow that the uri parser wouldn't choke... Oh well, it's not
> horribly important. I'll play with it a bit and see what I can do...

Well, obviously it'd be better if you could switch to a newer version of
.NET.  But barring that, you could just pre-process your string and
replace characters that might be problematic with a different
representation.

I don't know how often you're going to run into this, but in the
specific example, just replacing the '-' character with %2D might
convince the parser to let it through.

Pete
pedrito - 27 Aug 2007 14:01 GMT
>> Yeah, I had a feeling it'd probably work in 2.0... I'm wondering if I can
>> encode it somehow that the uri parser wouldn't choke... Oh well, it's not
[quoted text clipped - 10 lines]
>
> Pete

Pete, thanks. Tried that (replacing it with the %2D encoding) yesterday and
it didn't work... Same error.

I may bite the bullet and upgrade. I have 2005 Express. It's just that I
have to use 2003 for work and it's what I know and I'm comfortable with. The
app that does this isn't huge, but it's not small and I just don't know what
all is going to be involved in upgrading it. I won't have much time to work
on it during the week (it's a side-project), but maybe next weekend I'll try
porting it over and see how much work it's going to be.

Thanks.
pedrito - 26 Aug 2007 18:59 GMT
> Can you post some short but complete code sample to allow somebody to
> reproduce the issue?
[quoted text clipped - 19 lines]
>>
>> Thanks.

Sorry, you asked for short but complete. Here's complete  (though I think
the previous post is plenty to demonstrate how easy it is to produce).

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net;
using System.Text;

namespace UserCashTest
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
       private System.Windows.Forms.Button button1;
       private System.Windows.Forms.TextBox textBox1;
 /// <summary>
 /// Required designer variable.
 /// </summary>
 private System.ComponentModel.Container components = null;

 public Form1()
 {
  //
  // Required for Windows Form Designer support
  //
  InitializeComponent();

  //
  // TODO: Add any constructor code after InitializeComponent call
  //
 }

 /// <summary>
 /// Clean up any resources being used.
 /// </summary>
 protected override void Dispose( bool disposing )
 {
  if( disposing )
  {
   if (components != null)
   {
    components.Dispose();
   }
  }
  base.Dispose( disposing );
 }

 #region Windows Form Designer generated code
 /// <summary>
 /// Required method for Designer support - do not modify
 /// the contents of this method with the code editor.
 /// </summary>
 private void InitializeComponent()
 {
           this.button1 = new System.Windows.Forms.Button();
           this.textBox1 = new System.Windows.Forms.TextBox();
           this.SuspendLayout();
           //
           // button1
           //
           this.button1.Location = new System.Drawing.Point(88, 16);
           this.button1.Name = "button1";
           this.button1.TabIndex = 0;
           this.button1.Text = "button1";
           this.button1.Click += new
System.EventHandler(this.button1_Click);
           //
           // textBox1
           //
           this.textBox1.Anchor =
((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top
| System.Windows.Forms.AnchorStyles.Bottom)
               | System.Windows.Forms.AnchorStyles.Left)
               | System.Windows.Forms.AnchorStyles.Right)));
           this.textBox1.Location = new System.Drawing.Point(8, 64);
           this.textBox1.Multiline = true;
           this.textBox1.Name = "textBox1";
           this.textBox1.Size = new System.Drawing.Size(280, 200);
           this.textBox1.TabIndex = 1;
           this.textBox1.Text = "";
           //
           // Form1
           //
           this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
           this.ClientSize = new System.Drawing.Size(292, 273);
           this.Controls.Add(this.textBox1);
           this.Controls.Add(this.button1);
           this.Name = "Form1";
           this.Text = "Form1";
           this.ResumeLayout(false);

       }
 #endregion

 /// <summary>
 /// The main entry point for the application.
 /// </summary>
 [STAThread]
 static void Main()
 {
  Application.Run(new Form1());
 }

       private void button1_Click(object sender, System.EventArgs e)
       {
           HttpWebRequest req =
HttpWebRequest.Create(@"http://-eeayr4mwvtw998.usercash.com/") as
HttpWebRequest;
           HttpWebResponse resp = req.GetResponse() as HttpWebResponse;
           string len = resp.Headers["Content-Length"];
           int dataLen = Convert.ToInt32(len);
           byte[] data = new byte[dataLen];
           resp.GetResponseStream().Read(data, 0, dataLen);
           resp.Close();

           string dataStr = ASCIIEncoding.ASCII.GetString(data);
           textBox1.Text = dataStr;

       }
}
}

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.