我们正在使用Jaspersoft生成和检索报告。该服务器在内部网络(专用IP地址)中运行。Web Api中有一个代理服务器(外部服务器),用于接收可视化js和所有其他请求。然后,我们将此请求转发到Jaspersoft服务器。我们的方法如下:
protected override async Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken) {
var uriBuilder = new UriBuilder(request.RequestUri);
uriBuilder.Host = "internal address";
request.RequestUri = uriBuilder.Uri;
if (request.Method == HttpMethod.Get) {
request.Content = null;
}
var response = await new HttpClient().SendAsync(request,
HttpCompletionOption.ResponseHeadersRead, cancellationToken);
return response;
}
该方法可以成功下载visualize.js,但是当我们visualize()
从visualize.js调用method时,对于jaspersoft服务器返回的某些请求404-Not Found
。
我不确定为什么会发生错误。但是我希望问题是您正在HttpClient
为每个请求创建对象。您应该创建一次该对象并使用该对象。试试这个
//Initiate HttpClient object here
private HttpClient _client = new HttpClient();
protected override async Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken) {
var uriBuilder = new UriBuilder(request.RequestUri);
uriBuilder.Host = "internal address";
request.RequestUri = uriBuilder.Uri;
if (request.Method == HttpMethod.Get) {
request.Content = null;
}
var response = await _client.SendAsync(request,
HttpCompletionOption.ResponseHeadersRead, cancellationToken);
return response;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句