使用UriBuilder并构建httpRequest

时间:2014-11-04 09:03:35

标签: c# uri httprequest uribuilder

我尝试构建以下uri

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

我按照以下方式执行

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);

以上生成异常

Invalid URI: The hostname could not be parsed.

我将非常感谢您帮助解决问题

2 个答案:

答案 0 :(得分:2)

使用Uri构建器时,您需要放置主机,端口和放大器。路径,因为它自己的路线。此外,TestService.svc也是路径的一部分,而不是主机,如果不使用端口,你可以侥幸使用它,但是端口必须分开。

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

答案 1 :(得分:0)

当我运行您的代码时,我也会看到方括号作为address变量的值,但是我没有在生成的Uri中看到PerfTestService,也没有我知道为什么会这样?!我明白了:

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

由于您已经知道主机和路径,我建议您将其构建为字符串。

 var uriBuilder = new UriBuilder("http://localhost:8080/TestService.svc/RunTest");
 string address = uriBuilder.ToString();
 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address);