2016-07-01 5 views
2

私たちはJaspersoftを使用してレポートを生成し、取得しています。このサーバーは内部ネットワーク(プライベートIPアドレス)で動作しています。私たちはビジュアル化されたjsと他のすべてのリクエストを受け取るためにWeb APIにプロキシサーバー(外部サーバー)を持っています。次に、このリクエストをJaspersoftサーバーに転送します。成功しvisualize.jsをダウンロードすることができJaspersoft:プロキシサーバー(外部から内部へ)を使用してvisualize jsを呼び出す方法

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; 
} 

このapprochが、私たちは404-Not Foundを返すいくつかの要求jaspersoftサーバのために、visualize.jsからvisualize()メソッドを呼び出すときに:私たちのapprochは以下の通りです。

答えて

3

なぜエラーが発生するのかわかりません。しかし、私は問題がすべての要求のために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; 
} 
+0

私は試してみてください。 –

関連する問題