2012-03-09 3 views
-1

私はあなたの背景を示すためのIDEとしてnetbeansを使用しています。Apache httpclient:チュートリアルが壊れています - 実際にこのライブラリを使用するには?

現在のアプリケーションのようにApache httpclientライブラリを使いこなしています。組み込みJava HTTP接続に問題があります。

私はApacheのライブラリがより強力であると聞いた。

とにかく、Apacheのサイト上でのHTTPClientライブラリに付属しているチュートリアルのドキュメントには欠陥があるようだ。

HttpClient httpclient = new DefaultHttpClient(); 
HttpGet httpget = new HttpGet("http://localhost/"); 
HttpResponse response = httpclient.execute(httpget); 

ネット豆は私に(チュートリアルから直接コピーされた)このコードスニペットの問題を提供します。ローカルホストのも、初歩的なURIを忘れて、これで発生する問題は、次のとおりです。

  1. NetBeansはHttpClientをしてDefaultHttpClientは互換性のない型であることを不平を言います。私はこの周りを見ることができる唯一の方法は、とキャストすることです:

    (HttpClient) new DefaultHttpClient(); 
    
  2. Netbeansの「HTTPGET」ここでは、単に方法ではなく、「HttpUriRequest」であるため、httpclient.execute()がエラーを投げるだろうと文句を言います。

この3つのチュートリアルはどうやって間違っているのですか?この例では多くの欠陥があると、実際にどのように要求を完了することができますか?

私は迷っています。誰かを助けることができます。いくつかの異なる方法があるように見えますが、すべて私が探しているものではありません。

既に整形済みのURLをアプリでStringにしてから、すべてのリダイレクトを行うことができます。私は応答の内容に全く興味がなく、単にそれが落とすクッキーだけではありません。

おかげで、

グレゴリー

+0

依存していますか、HttpClient 3.xまたはHttpClient 4.xを使用していますか?どちらも互換性がありません。 –

+0

4.xがhttp://hc.apache.org/からダウンロードされ、http://hc.apache.org/httpcomponents-client-ga/tutorial/pdf/httpclient-tutorial.pdfのチュートリアルに続きます。 – ortonomy

+0

エラーとは投げられた? –

答えて

1

を以下、CustomHttpClientを実施しました。 NetBeansは4.xの代わりにHttpClient 3.xをインポートしたと思う。輸入品を修正してください。

+0

[OK]をクリックして、いくつかのサンプルクラスファイルをダウンロードしました。 これは興味深いものです。@since 4.0のコメントでは、このメソッドに接続を実装する方法を示します。 'DefaultHttpClient client1 = new DefaultHttpClient(); HttpHost target = new HttpHost( "www.google.com"、80、 "http"); HttpGet req =新しいHttpGet( "/"); HttpResponse rsp = client1.execute(target、req); ' – ortonomy

+0

ただし、このコードはまだ動作しません。 Netbeansはまだシンボルを見つけることができないと訴えています - DefaultHttpClientには "execute"メソッドがないためです。私はあなたがインポートに関して正しいと思いますが、私はJARファイルを使用していますので、私は必要なすべてのファイルを持っています。それらはすべてクラスパスにあります。私は依存関係がないかもしれないと思いますか? – ortonomy

+0

申し訳ありません、私はあきらめます。 Netbeansはそれを実行させませんが、私はファイルをインポートしようとします。私はMavenプロジェクトのメンバーをいくつか見つけましたが、それはうまくいくようですが、Mavenの使い方や自分のプロジェクトへの移行方法はわかりません。これは乾いたようです。とにかくあなたの答えが正しい行に沿っていたと思います。試してくれてありがとう... – ortonomy

0

あなたはこのコードを使用してみましたが、彼らはあなたが行うよりも異なるメカニズムを使用しているようです。 〜から取られるhere。これは3.X版用ですが、異なるバージョンを使用している可能性があります。私はこの(Android上)を使用する場合

import org.apache.commons.httpclient.*; 
import org.apache.commons.httpclient.methods.*; 
import org.apache.commons.httpclient.params.HttpMethodParams; 

import java.io.*; 

public class HttpClientTutorial { 

    private static String url = "http://www.apache.org/"; 

    public static void main(String[] args) { 
    // Create an instance of HttpClient. 
    HttpClient client = new HttpClient(); 

    // Create a method instance. 
    GetMethod method = new GetMethod(url); 

    // Provide custom retry handler is necessary 
    method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, 
      new DefaultHttpMethodRetryHandler(3, false)); 

    try { 
     // Execute the method. 
     int statusCode = client.executeMethod(method); 

     if (statusCode != HttpStatus.SC_OK) { 
     System.err.println("Method failed: " + method.getStatusLine()); 
     } 

     // Read the response body. 
     byte[] responseBody = method.getResponseBody(); 

     // Deal with the response. 
     // Use caution: ensure correct character encoding and is not binary data 
     System.out.println(new String(responseBody)); 

    } catch (HttpException e) { 
     System.err.println("Fatal protocol violation: " + e.getMessage()); 
     e.printStackTrace(); 
    } catch (IOException e) { 
     System.err.println("Fatal transport error: " + e.getMessage()); 
     e.printStackTrace(); 
    } finally { 
     // Release the connection. 
     method.releaseConnection(); 
    } 
    } 
} 
+0

私が使用しているバージョンは、http://hc.apache.org/ から直接ダウンロードした4.xとチュートリアルです。http://hc.apache.org/httpcomponents -client-ga/tutorial/pdf/httpclient-tutorial.pdf これは完全に骨抜きに見えますが、コードスニペットをいただきありがとうございます。 – ortonomy

0

は、私はあなたの輸入を見てお勧めの例にhere

+0

http://hc.apache.org/でapacheから直接ライブラリをダウンロードしました 私がそれに従うことができるかどうかが分かります。実際に接続するのがうれしく思います。 – ortonomy

-1

非常に配線されています。同じ問題があった場合、私はhttpclient 4.3.6の最新バージョンであるhttpclient 4.5.2を置き換え、エラーは魔法のように消える!

関連する問題