我需要连接到库中的服务器,以便我可以使用一些内部API功能。
此服务器使用OWIN进行身份验证,我需要使用cookie来帮助进行身份验证。我已经看了很多关于如何使用HttpClient和cookie的例子,但我显然仍然做错了。
我设置了这个小测试应用程序,尝试它,但我继续得到一个Interal Server错误:
{StatusCode:500,ReasonPhrase:'内部服务器错误',版本:1.1, 内容:System.Net.Http.StreamContent,Headers:{ 内容安全政策:script-src' unsafe-eval' '自' cdnjs.cloudflare.com X-SourceFiles: =?UTF-8?B?kjsdf83r3748ryefhkr4389r =?= X-UA兼容:IE =边缘X-Frame-选项:SAMEORIGIN日期:星期一,2016年8月15日14:37:28 GMT 服务器:Microsoft-IIS / 10.0内容长度:3312内容类型: 应用/ JSON;字符集= UTF-8}}
这是我的小测试应用程序:
static void Main(string[] args)
{
Console.WriteLine("Connecting to Spock Library System...");
GenerateBookLoan();
}
private static void GenerateBookLoan()
{
DateTime dueDate_Begin = DateTime.Today;
DateTime dueDate_End = DateTime.Today.AddDays(13);
var dueDate_Range = new Dictionary<string, string>
{
{"BeginDueDate", dueDate_Begin.ToString()},
{"EndDueDate", dueDate_End.ToString()}
};
var json = JsonConvert.SerializeObject(dueDate_Range);
var credentials = new NetworkCredential("library_API", "xxxxxxxxxxxxxx");
var handler = new HttpClientHandler { Credentials = credentials, UseCookies = true };
var cookies = new CookieContainer();
handler.CookieContainer = cookies;
using (var http = new HttpClient(handler))
{
try
{
http.BaseAddress = new Uri("http://localhost:63432/");
IEnumerable<Cookie> responseCookies = cookies.GetCookies(http.BaseAddress).Cast<Cookie>();
HttpResponseMessage response = http.PostAsync("api/books/loans/add",
new StringContent(json, Encoding.UTF8, "application/json")).Result;
Console.WriteLine(response);
//do stuff//
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
Console.WriteLine("Done.");
Console.ReadLine();
}
我需要一些关于下一步的建议。我已经在这里阅读了大量的答案,但我似乎无法找到符合我需求的答案。
谢谢!