如何使WebClient提示输入凭据

时间:2014-12-02 22:00:41

标签: wcf webclient

所以我有这个代码,它有效:

    var netCred = new NetworkCredential { UserName = "user1", Password = @"pass1" };
    WebClient proxy = new WebClient();
    proxy.Credentials = netCred;

    //Method 1 - Newtonsoft.Json


        string serviceURL =
           string.Format("https://sourcesite.com/api/external/v1/Snapshot-Accrual?isConfirmed="
            + Confirmed.ToString() + "&sinceDate=" + String.Format("{0:yyyy-MM-dd}", SinceDate);
        data = proxy.DownloadData(serviceURL);
        jsonString = Encoding.ASCII.GetString(data);

        ac1 = Newtonsoft.Json.JsonConvert.DeserializeObject<SnapshotAccruals>(jsonString);

现在,如果我只知道如何提示凭据而不是硬编码,我就会被设置。我知道如果我将serviceURL直接粘贴到浏览器中,它会询问我的凭据。如果我在代码中省略它们(401)未经授权。

1 个答案:

答案 0 :(得分:0)

使用Fiddler了解浏览器的工作原理,您会看到当您将URL粘贴到浏览器中时,服务器会返回401,然后提示浏览器显示身份验证对话框。

如果您知道自己总是需要凭据,那么您应该在API调用之前提示。如果您不知道,那么您需要先尝试并检查401的响应,然后提示