1

私が今苦労している問題は次のとおりです。リモート サーバーに zip アーカイブがあります。私が開発した Eclipse プラグインは、このフォーラムからの提案を使用してこのアーカイブをダウンロードします。

//Connect readable channel to the URL
ReadableByteChannel rbc = Channels.newChannel(libraryUrl.openStream());
//Create local file
FileOutputStream fos = new FileOutputStream(libraryZipPath);
//Download the remote archive to the local file
fos.getChannel().transferFrom(rbc, 0, libraryUrl.openConnection().getContentLength()); 
//Close channel
fos.close();

サーバーに、Web ページの訪問統計をカウントする html ファイルがあります。カウントを行う JavaScript は次のとおりです。

var data = '&r=' + escape(document.referrer) + '&n=' + escape(navigator.userAgent)
+ '&p=' + escape(navigator.userAgent) + '&g=' + escape(document.location.href);
if (navigator.userAgent.substring(0,1)>'3')
data = data + '&sd=' + screen.colorDepth + '&sw=' + escape(screen.width+'x'+screen.height);

document.write('<a href="http://www.1freecounter.com/stats.php?i=89959" target=\"_blank\">');
document.write('<img alt="Free Counter" border=0 hspace=0 '+'vspace=0 src="http://www.1freecounter.com/counter.php?i=89959' + data + '">');
document.write('</a>');

問題は、この javascript または html ファイルを一緒に使用して、アーカイブ ファイルのダウンロード統計をカウントすることは可能なのかということです。

4

2 に答える 2

1

返信ありがとうございます、フィリップ!

私はそれを非常に簡単な方法で機能させる方法を理解しました。上記の例( "http://www.1freecounter.com/stats.php?i=89959")のカウンターについて考えてみましょう。そのアドレスによるカウンターは、合計6つのパラメーターを取ります。

r-ドキュメントリファラー、

nとpはユーザーエージェントであり、ブラウザ名、OS名、OSバージョン、ブラウザバージョンなどで構成されます。

gは場所、

sdとswは、色深度と画面サイズです(バイナリファイルの場合、これら2つをスキップできます)。

次に、カウント要求の文字列を作成します。例えば、

String cntURL = "http://www.1freecounter.com/counter.php?i=89959&r="+
URLEncoder.encode("some string for a referrer","UTF-8") + "&n="+
URLEncoder.encode("browser name (OS name OS version) browser version", "UTF-8")+"&p="+
URLEncoder.encode("the same as above", "UTF-8")+"&g=<location string>";

パラメータがutf-8文字セットにエンコードされていることに注意してください。そうしないと、カウンターはアクセスを正しくカウントしません。

次に、URLクラスを使用して、URLオブジェクトを作成し、Steamを開きます。

URL statsUrl = new URL(cntURL);
statsUrl.openStream();

それだ!httpヘッダーに含まれるパラメータを調べる必要はありません。接続を開くための適切な文字列を形成するだけです。

リクエストに必要なすべての情報を取得する簡単なメソッドを作成し、サーバーからファイルをダウンロードするメソッドにその呼び出しを挿入しました。

于 2012-09-13T16:23:51.403 に答える
1

Web サイトにグラフィックとして埋め込まれているサードパーティの Web カウンターを使用しています。ユーザーのブラウザがこのグラフィックをロードすると、サードパーティのサーバーがアクセスを認識し、カウンターを増やします。

バイナリ ファイルがダウンロードされるとき、webcounter グラフィックが要求されないため、これはバイナリ ダウンロードでは機能しません。

試すことができるのは、Java プログラムがバイナリ ファイルをダウンロードするときにカウンター グラフィックもダウンロードするようにすることです。サーバー上のスクリプトがそれへのアクセスとしてカウントするように、zip アーカイブの URL を Referrer HTTP ヘッダーとしてイメージ ダウンロードに渡すようにしてください。Referrer などのカスタム HTTP ヘッダーを設定するには、URLConnection クラスを使用する必要があります。

于 2012-09-04T09:43:49.817 に答える