WebClient.DownloadString在有效URL上给出了400错误

时间:2016-02-29 15:13:18

标签: c# webclient webclient-download

我正在尝试从我的C#代码中获取服务的JSON响应。我生成了URL,并将其传递给webClient.DownloadString方法,然后返回400错误。我可以将URL复制到浏览器中并获得正确的响应。

我可能会遗失什么?

以下是代码:

using (var webClient = new WebClient())
{
    try
    {
        var requestUrl = GetRequestUrl(email);
        // Error here
        var jsonResponse = webClient.DownloadString(requestUrl);
        //...
    }
    catch (Exception exception)
    {
        // ...
    }
}

以下是从GetRequestUrl(email)生成的URL的示例,它返回一个字符串。 (某些值被编辑)

  

http://api.someservice.org/api.php?usr=xxxxyyyy&pwd=zzz2345mmm22&check=none@nowhere.com

以下是我从浏览器获得的实际网址。

{"authentication_status":1,"limit_status":0,"limit_desc":"Not Limited","verify_status":1,"verify_status_desc":"MX record about nowhere.com exists.Connection succeeded to nowhere-com.mail.protection.outlook.com SMTP.220 BN3NAM01FT045.mail.protection.outlook.com Microsoft ESMTP MAIL Service ready at Mon, 29 Feb 2016 14:52:44 +0000\n> HELO verify-email.org250 BN3NAM01FT045.mail.protection.outlook.com Hello [verify-email.org]\n> MAIL FROM: <check@verify-email.org>=250 2.1.0 Sender OK\n> RCPT TO: <none@nowhere.com>=250 2.1.5 Recipient OK\n"}

更新:以下是GetRequestUrl的作用:

protected string GetRequestUrl(string email)
{
    if (string.IsNullOrEmpty(email))
        throw new ArgumentNullException("email");

    var requestUrl = string.Format("http://api.someservice.org/api.php?usr={0}&pwd={1}&check={2}", ApiUsername, ApiPassword, Uri.EscapeUriString(email));

    return requestUrl;
}

UPDATE:这是异常消息,InnerException为NULL。

  

远程服务器返回错误:(400)错误请求。

UPDATE:捕获WebException,并获得完整的ResponseStream。我不认为这个电话实际上已经出去了,Fiddler没有接到该地址的电话。这是例外。响应:

<h2>Bad Request - Invalid Hostname</h2>
<p>HTTP Error 400. The request hostname is invalid.</p>

0 个答案:

没有答案