Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use UriBuilder and construct httpRequest

I try to build the following uri

http://localhost:8080/TestService.svc/RunTest

I do it as following

var uriBuilder = new UriBuilder();
uriBuilder.Host = "localhost:8080/TestService.svc";
uriBuilder.Path = String.Format("/{0}", "RunTest");
string address = uriBuilder.ToString()

//In debugger the address looks like http://[http://localhost:8080/TestService.svc]/RunTest
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(address);

The above generates an exception

Invalid URI: The hostname could not be parsed.

I`ll appreciate your help in solving the issue

like image 932
Yakov Avatar asked Dec 10 '25 05:12

Yakov


2 Answers

When using the Uri builder you need to put the host, port & path as it's own line. Also TestService.svc is also part of the path and not the host, you can get away with it if not using port but with port they have to be separated out.

var uriBuilder = new UriBuilder();
uriBuilder.Host = "localhost";
uriBuilder.Port = 8080;
uriBuilder.Path = String.Format("/{0}/{1}", "TestService.svc", "RunTest");
var address = uriBuilder.ToString();
like image 168
CharlesNRice Avatar answered Dec 12 '25 17:12

CharlesNRice


When I run your code, I also see square brackets as the value for the address variable as you point out, but I don't see PerfTestService in the generated Uri, nor do I see why this would be?! I see:

http://[localhost:8080/TestService.svc]/RunTest

Since you already know the host and the path, I suggest you construct it as a string.

 var uriBuilder = new UriBuilder("http://localhost:8080/TestService.svc/RunTest");
 string address = uriBuilder.ToString();
 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address);
like image 44
Dave Avatar answered Dec 12 '25 17:12

Dave



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!