0

autobuyer として機能するアプリケーションを作成しました。誰よりも早くアイテムにたどり着くには、できるだけ速くすることが重要です。無限ループ (つまり for(;;)) を使用して継続的な http 要求を作成し、JSON の結果を解析しています。

複数の同時リクエストを行う方法を知っている人はいますか? 私は現在、1秒間に約3つのリクエストを行っています。また、Java はこの種のアプリケーションには適していませんか? 別の言語の使用を検討する必要がありますか?

どうもありがとうございました!

編集:次のような検索機能を使用します

for(;;){
search(323213, 67);
search(376753, 89);
}

public void search(int itemID, int maxPrice) {

// sets the http request with the need cookies and headers
// processes the json. If (itemId==x&&maxPrice>y) ==> call buy method

}
4

4 に答える 4

2

無限ループでリクエストを行うと、悪用を積極的に監視しているサービスによって IP がブロックされます。

短期間に大量のリクエストを並行して送信したい場合は、複数のスレッドをスピンアップして、それぞれにリクエストを送信させます。

Java は、マルチスレッドに非常に適したプラットフォームです。

于 2012-11-12T19:54:05.393 に答える
1

ScheduledThreadPoolExecutorを使用すると、ランナブルを固定レート (たとえば 10 秒ごと) で実行するようにスケジュールでき、自分でスレッドを生成することを気にする必要はありません。

于 2012-11-12T19:58:29.080 に答える
0
  1. get request String url = " http://www.google.com/search?q=developer ";

    HttpClient client = new DefaultHttpClient();
    HttpGet request = new HttpGet(url);
    
    // add request header
    request.addHeader("User-Agent", USER_AGENT);
    
    HttpResponse response = client.execute(request);
    
  2. 文字列 url = " https://selfsolve.apple.com/wcResults.do ";

    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(url);
    
    // add header
    post.setHeader("User-Agent", USER_AGENT);
    
    List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
    urlParameters.add(new BasicNameValuePair("sn", "C02G8416DRJM"));
    urlParameters.add(new BasicNameValuePair("cn", ""));
    urlParameters.add(new BasicNameValuePair("locale", ""));
    urlParameters.add(new BasicNameValuePair("caller", ""));
    urlParameters.add(new BasicNameValuePair("num", "12345"));
    
    post.setEntity(new UrlEncodedFormEntity(urlParameters));
    
    HttpResponse response = client.execute(post);
    
于 2014-09-13T09:34:31.170 に答える
0

スレッドでこれを行う方法の良い例を示す別の投稿を次に示し ます。JAVA で非同期 HTTP 要求を作成するにはどうすればよいですか?

JavaScript に慣れている場合は、Node.JS もこれに適した選択肢です。Node.JS を使用すると、リクエストが非同期で行われるため、スレッド化について心配する必要がなくなります。

于 2012-11-12T19:57:59.503 に答える