使用.NET Http客户端登录jasper服务器。
HttpResponseMessage loginResponse = loginClient.PostAsync("http://localhost:8080/jasperserver/rest/login", formContent).Result;
IEnumerable<string> jaspsessid = loginResponse.Headers.GetValues("Set-Cookie");
使用上面的会话ID我将传递给下一个请求。
HttpClient httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add("Cookie", jaspsessid);
httpClient.DefaultRequestHeaders.Accept.Add(new
System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
StringContent requestContent = constructJasperRequestJson(reportParameters);
HttpResponseMessage generateReportRequestResponse = new HttpResponseMessage();
generateReportRequestResponse = httpClient.PostAsync(AppConstant.JASPER_SERVER_BASE_URI + AppConstant.JASPER_SERVER_REPORT_EXECUTION_URI, requestContent).Result;
在第二次请求中我得到401.Unauthorized。
如果有人知道这个问题,请帮助我。
答案 0 :(得分:2)
您可以使用CookieContainer来保存会话cookie,而不是设置标题。
有关示例,请参阅How do I set a cookie on HttpClient's HttpRequestMessage。