• ベストアンサー

HttpURLConnectionで接続できないサイト

ブラウザからは接続できるのですが、HttpURLConnectionを使って接続しようとすると404が帰ってきてしまいます。URLは合っています。 接続できるようにするにはどうしたらよいですか? 以下のURLです。 http://getentry.ddbj.nig.ac.jp/search/search-e.jsp

質問者が選んだベストアンサー

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

このサイトはバーチャルホストを利用しているのか、HTTPリクエストにHostヘッダを指定しないと404を返すようです。 私の手元のJDK(5.0)を使って試してみましたが、問題なくデータを取得出来ましたので、JDKのバージョンの問題かもしれません。

DJOZUMA
質問者

お礼

Bonjinさん ありがとうございます!! 試してみます!!また、質問するかもしれませんがその時はまた、ご教授くださいm(_ _)m

DJOZUMA
質問者

補足

以下のように記述してみましたがだめでした。 HOSTヘッダの指定というのはこのような事ではないという事でしょうか? /** * URLにアクセスするメソッド * * @param searchURL アクセスするURL * @return アクセスし、取得したHTMLの文字列 */ public String accessURL(String searchURL) { System.out.println(CLASS_NAME + ".public String accessURL(String " + searchURL + ")"); BufferedInputStream input = null; String result = ""; try { URL url; HttpURLConnection urlcon; //PROXYが""の時はPROXY無しでアクセス if(PropertyLoader.PROXY.equals("")) { url = new URL(searchURL); } else //PROXYが設定されている時はPROXYを使ってアクセス { url = new URL("http", PropertyLoader.PROXY, PropertyLoader.PORT ,searchURL); } //urlコネクションをオープンする urlcon = (HttpURLConnection)url.openConnection(); urlcon.setDoOutput(true); urlcon.setAllowUserInteraction(true); urlcon.setRequestProperty("Content-type", "application/x-www-form-urlencoded"); if(urlcon.getResponseCode() >= 500) { return ""; } //BufferedInputStreamのインスタンス化 input = new BufferedInputStream(urlcon.getInputStream()); try { int arraySize = 4096; byte[] buffer = new byte[arraySize]; int v = 0; int count = 0; //バイトデータが送られてくる間ループを実行 while((v = input.read(buffer, count, 1024)) != -1) { count += v; if(count >= (buffer.length - 1024)) { byte[] newb = new byte[count * 2]; System.arraycopy(buffer, 0, newb, 0, buffer.length); buffer = newb; } } result= new String(buffer, 0, count, "EUC_JP"); } catch(OutOfMemoryError e) { return ""; } } catch(IOException e) { return ""; } catch (Exception e) { return ""; } finally { try { if(input != null) { //inputのクローズ input.close(); } } catch(IOException e) { e.printStackTrace(); } } return result; }

その他の回答 (1)

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.2

ANo.1さん、横槍失礼します。 HOSTヘッダといったら、HOSTヘッダです。 [HOST: http://hostname/] とかいうやつです。 HTTP/1.1仕様から必須です。 http://www.studyinghttp.net/header これを参照の事。

DJOZUMA
質問者

補足

PED02744さんありがとうございます。 下記の様にやったのですが、 urlcon.setRequestProperty("Host", "http://getentry.ddbj.nig.ac.jp/"); 駄目でした・・・。

関連するQ&A

専門家に質問してみよう