2011-12-07 74 views
0

嗯,我真的希望我可以在這裏不問這個問題,但我不能:( 這個想法很簡單,你有這個鏈接http://cetatenie.just.ro/和鏈接是重要的,因爲它適用於。別人GAE的HTTP GET

要從GAE上執行HTTP GET - 在本地就目前而言,這是它

如果我這樣做是在主類,像這樣:

HttpClient httpClient = new DefaultHttpClient();  
HttpGet httpGet = new HttpGet("http://cetatenie.just.ro/"); 
HttpResponse response = httpClient.execute(httpGet); 

然後!解析迴應一切都很好,現在我也是這樣做的(al大多數)在GAE的東西 - 在本地(在Eclipse中 - >運行 - > Web應用程序),在Eclipse GAE插件的幫助下。

FetchOptions fetchOptions = FetchOptions.Builder.withDeadline(50000); 
HTTPRequest request = new HTTPRequest(new URL("http://cetatenie.just.ro/"), HTTPMethod.GET, fetchOptions); 
System.out.println("ULR-->" + request.getURL());  
URLFetchService service = URLFetchServiceFactory.getURLFetchService(); 
HTTPResponse response = service.fetch(request); 
System.out.println("RESPONSE_CODE-->" + response.getResponseCode()); 
String responseAsString = new String(response.getContent()); 
System.out.println("RESPONSE_AS_STRING-->" + responseAsString); 

我總是得到一個Http 500的錯誤代碼。我知道這表示服務器問題,但是它是如何從我的獨立應用程序中運行的?

GAE會做點什麼腥嗎?

Regards, Eugene。

+0

你看了[有關使URL請求的文檔(http://code.google.com/appengine/docs/java/urlfetch/overview.html)? –

+0

是的,我確實(奇怪,我知道)。即使我這樣做:URL url = new URL(「http://cetatenie.just.ro/」); \t BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream())); 絃線; StringBuilder response = new StringBuilder(「」); ((line = reader.readLine())!= null){ while((line = reader.readLine())!= null)response.append(line); } reader.close(); (「RESPONSE - >」+ response);結果將是一樣的。 – Eugene

+0

在我的瀏覽器中訪問該URL也會返回一個500.您確定它不僅僅是壞了嗎? –

回答

0

該死!這實際上很簡單 - 發送請求時,我缺少兩個頭(看起來像GAE就像一個telnet - 除非指定它們,否則不會發送任何頭文件)。反正這裏是我加:

URL url = new URL("http://cetatenie.just.ro"); 
URLConnection urlConnection = url.openConnection(); 
urlConnection.setRequestProperty("Host", "cetatenie.just.ro"); 
urlConnection.setRequestProperty("User-Agent", "Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20100101 Firefox/7.0.1");