所以我有这个代码,它有效:
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)未经授权。
答案 0 :(得分:0)
使用Fiddler了解浏览器的工作原理,您会看到当您将URL粘贴到浏览器中时,服务器会返回401,然后提示浏览器显示身份验证对话框。
如果您知道自己总是需要凭据,那么您应该在API调用之前提示。如果您不知道,那么您需要先尝试并检查401的响应,然后提示