我有一个网址,其中包含一些特殊字符,例如|
和&
。
URL正在返回JSON数据。
当我在浏览器中尝试此URL时,它将运行并返回json数据,但是当我尝试使用WebClient.DownloadString()
时,它将无效。
示例:
使用浏览器:
http://websvr.test.com/abc.aspx?Action=B&PacketList=116307638|1355.00
Output :
[{"Column1":106,"Column2":"Buying Successfully."}]
使用WebClient.DownloadString():
using (WebClient wc = new WebClient())
{
var json = wc.DownloadString("http://websvr.test.com/abc.aspx?Action=B&PacketList=116307638|1355.00");
}
Output :
[{"Column1":-107,"Column2":"Invalid Parametrer Required-(RefNo|JBPrice)!"}]
答案 0 :(得分:1)
您应该在网址中对PacketList
参数进行编码,因为它包含管道字符,必须将其编码为%7c
。浏览器会自动对URL中的必要字符进行编码,但您应该手动将其编码为代码。
var json = wc.DownloadString("http://websvr.test.com/abc.aspx?Action=B&PacketList=" +
System.Web.HttpUtility.UrlEncode("116307638|1355.00");
答案 1 :(得分:0)
尝试在调用DownloadString()
之前设置webclient的编码,并使用UrlEncode Method对网址进行编码:
WebClient.Encoding = Encoding.UTF8;
var url = WebUtility.UrlEncode("http://websvr.test.com/abc.aspx?Action=B&PacketList=116307638|1355.00");
var json = wc.DownloadString(url);