c#是WebRequest.Create给我一个URL编码?

时间:2015-05-27 12:06:44

标签: c# .net httpwebrequest webrequest

我一直在提供发送短信的API,API声明我应该使用此网址

http://<server>:<port>/bulksms/bulksms?
username=XXXX&password=YYYYY&type=Y&dlr=Z&destination=QQQQQQQQQ&sour
ce=RRRR&message=SSSSSSSS<&url=KKKK>

消息网址必须 URL-UTF-8编码

我所做的就是创建这样的网址:

string urlSMS = string.Format("http://{0}:{1}/bulksms/bulksms?username={2}&password={3}&type={4}&dlr={5}&destination={6}&source={7}&message={8}&url=0",
server, port, username, password, type, dlr, destination, source, message);

然后我这样调用了这个URL:

WebRequest wr = WebRequest.Create(urlSMS);
                wr.Timeout = 3500;
                try
                {
                    HttpWebResponse response = (HttpWebResponse)wr.GetResponse();

但是,我一直有超时错误消息,我检查了一切,这就是我要问的原因。我需要知道是否

WebRequest.Create(urlSMS)

给我一​​个URL-UTF-8编码或不编码。

由于

1 个答案:

答案 0 :(得分:1)

是。看起来WebRequest.Create(url)将UTF-8编码为url。

当我尝试这个时:

WebRequest r = WebRequest.Create("http://www.google.com/search?q=♥");

我可以看到URI被编码的内部表示:r.RequestUri.AbsoluteUri返回http://www.google.com/search?q=%E2%99%A5

r.RequestUri.ToString()返回http://www.google.com/search?q=♥