WebClient.DownloadString不返回值

时间:2016-08-29 08:40:59

标签: c# json

我有一个网址,其中包含一些特殊字符,例如|&。 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)!"}]

2 个答案:

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