2011-12-07 8 views
3

URL接続libaryを使用してTwitterの検索URL(JSONのツイートリストを返す)に接続する小さなJavaプログラムを作成しようとしています。 Javaのチュートリアルから取られプロキシを通じてJavaのURLに接続しています

私のコードは次のようになります。

in thread "main" java.net.ConnectException: Connection refused 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 

これは何かである場合、私は知らない。

 public static void main(String[] args) throws Exception { 
     URL oracle = new URL("http://search.twitter.com/search.json?q=hi"); 
     URLConnection yc = oracle.openConnection(); 
     BufferedReader in = new BufferedReader(
           new InputStreamReader(
           yc.getInputStream())); 
     String inputLine; 

     while ((inputLine = in.readLine()) != null) 
      System.out.println(inputLine); 
     in.close(); 
    } 

が、何らかの理由で、私は次の例外を得続ける

私がコードを書いたやり方と、食糧の設定や、私のネットワークと関係があるものが原因です。私はインターネットアクセス用に設定されたプロキシサーバーを持っています。私が知っている限り、これは適切に設定されています。アップデートを取得していて、eclipseを通じて新しいソフトウェアをインストールできるからです。プロキシ情報をURLメソッドに代入する必要がありますか、それとも何か問題がありますか?

答えて

4

URLがプロキシのシステムプロパティに依存して、次のようにプロキシを設定してみてください:

System.setProperty("http.proxyHost", "yourproxyserver"); 
System.setProperty("http.proxyPort", "portnumber"); 
+0

どのような認証? – Randnum

+0

私にとってはSystem.setProperty( "http.proxy.mycompany.com"、 "私の会社")です。 – Randnum

+0

およびSystem.setProperty( "http.8080"、 "8080");? – Randnum

4

残念ながら、Eclipseの正しいプロキシ設定は、Eclipseで始まっプロキシのJavaプログラムを支援していないようです。同様に、システム全体のプロキシ設定を使用するようにJavaシステム設定を設定することもできません。とにかく、認証を必要とするプロキシを持っているときではありません。

トーマス・ヨハン・Eggumは、あなたが「通常、」非認証プロキシを持っているならば、(下記参照)-Dまたはプログラムのいずれかを介して、コマンドラインで2つのJVM変数http.proxyHosthttp.proxyPortを設定すると、物事の世話をする、言ったように。

認証プロキシサーバー、つまりユーザーIDとパスワードを表示するプロキシサーバーの場合、多くの人がhttp.proxyUserhttp.proxyPasswordを設定することをおすすめします。それはうまくいかないので、悪いアドバイスです。どうやら彼らはではなく、はJavaのドキュメントで定義されています。

認証を「行う」方法は、プログラムで認証者を使用するように見えます。もしあなたがそれをやろうとするならば、あなたはプログラム的に、つまりホストとポートを含むすべてのことをやり遂げるかもしれません。ここで私はそれを働かせている:

public static void main(String[] args) { 
     try { 

     System.setProperty("http.proxyHost", "my.proxy.host"); 
     System.setProperty("http.proxyPort", "8080-or-whatever-proxy-port"); 
     Authenticator.setDefault(new DummyAuthenticator()); 

     /* do your main program stuff */    

     } catch (Exception e) { 
     e.printStackTrace(); 
     } 
    } 

    private static class DummyAuthenticator extends Authenticator { 
     public PasswordAuthentication getPasswordAuthentication() { 
     return new PasswordAuthentication(
       "my-user-id", "my-password".toCharArray() 
       ); 
     } 
    } 
+0

これはより詳細であり、ユーザー名/パスワード認証を含みます。 – sversch

関連する問題