2011-10-26 10 views
1

google-app-engine Webサービス(testeserjaum.appspot.com)から情報を取得するJavaコードを実行していますが、常に最初のシステムに{null=[HTTP/1.1 302 Found], Date=[Wed, 26 Oct 2011 21:02:46 GMT], Content-Length=[0], Location=[https://testeserjaum.appspot.com/], Content-Type=[text/html], Server=[Google Frontend]} .out.printlnとnullの2つ目です。google-app-engineでjavaと通信するときのエラー302

他のgoogle-app-engine Webサービスでは、コードは完全に動作します(私はtestegelfur.appspot.comで試してみましたが効果がありました)。

import java.io.BufferedInputStream; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 

public class URLConnectionReader { 
    public static void main(String[] args) throws MalformedURLException, IOException{ 
      URL url = new URL("http://testeserjaum.appspot.com/"); 
      HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 
      System.out.println(urlConnection.getHeaderFields()); 
      try { 
      InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 
      BufferedReader buff = new BufferedReader(new InputStreamReader(in)); 
      System.out.println(buff.readLine()); 
      }finally{ 
      urlConnection.disconnect(); 
      } 

    } 
} 

そして、それは場合に役立ちます私は知らないが、ここでは実際に動作するPythonの同等だ:ここでは

はコードです。私はアンドロイドアプリケーションでこのソフトウェアを使用する予定で、使用することはできません。ソフトウェアを大量に使用しているので、これをjavaで行う必要があります。

import urllib2 
import base64 

req = urllib2.Request('http://testeserjaum.appspot.com/') 
req.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)') 
#base64string = base64.encodestring('%s:%s' %('user', 'pass')) 
#print base64string 
#req.add_header("Authorization", "Basic %s" %base64string) 
lol = urllib2.urlopen(req) 
print lol.read() 
+0

コードをペーストビンではなく質問に含めてください。ペーストビンは消え去る傾向があり、読むことが難しくなります。あなたの質問を編集して、コードをインラインで追加しました。 –

答えて

5

HTTP 302はリダイレクトであり、エラーではありません。だからこそ、が見つかりました。です。

具体的には、クライアントにhttps://testeserjaum.appspot.com/の代わりにhttp://testeserjaum.appspot.com/をフェッチするように指示します。

リダイレクトを処理したくない場合は、https://testeserjaum.appspot.com/に直接アクセスしてください。

2

これは誤りではありません。それはあなたが従うことができる一時的なリダイレクトです。一部のライブラリは常にリダイレクトに従います。いくつか決してしない。他の人はそれをあなたに任せます。ライブラリがそうでない場合は、ユーザコードで行うことができます。

しかし、Javaは便利なsetFollowRedirectsを提供しています。

+0

私はそれを知っています、なぜこれが起こって、それを修正する方法の任意のアイデア?なぜなら、他の一般的なサイト(どちらもPythonコードではない)上の他のGoogle-app-engine Webサービスでは起こらないからです。 – user888360

+0

これらのサービス(testeserjaum、testegelfurなど)には、どのソースがありますか?なぜリダイレクトするのか知っていますか?彼らはユーザーエージェントの盗聴を使ってHttpUrlConnectionを検出できますか?編集:彼らの1つがHTTPSに強制的に設定されているようです。それはブラウザで起こっているので、私はそれが盗聴だとは思わない。おそらくPythonでは自動的に発生しますが、気付かなかったのです。 –

関連する問題