2012-05-31 82 views
1

在我的應用程序,我想打通過瀏覽器打開(計算機上以及時我用下面的代碼Android的HTTP請求奇怪404沒有找到問題

try { 
    url = new URL(serverURL); 

    httpURLConnection = (HttpURLConnection) url.openConnection(); 

    int timeout = 30000; 
    httpURLConnection.setConnectTimeout(timeout); 
    httpURLConnection.setReadTimeout(timeout); 

    httpURLConnection.connect(); 

    String httpResponseMessage = httpURLConnection.getResponseMessage(); 
    responseCode = httpURLConnection.getResponseCode(); 

    Log.i(LOG_TAG,"Response code "+responseCode); 

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

的(祕密)的URL網址如在電話中),完美地工作,並且響應如預期。但是當我通過上面的代碼點擊相同的URL時,它會給出響應代碼404(NOT FOUND)。有人可以告訴我這個問題是什麼嗎? (對不起,不能發佈網址,因爲它是高度機密的。)

+0

您是否嘗試過使用相同的代碼不同的網址? –

+0

對於其他URL,響應代碼爲200。 – Rajkiran

+0

那麼你能在手機的瀏覽器中打開該URL嗎? (如果是防火牆配置問題) –

回答

1

問題解決了:)

 try { 

      url = new URL(serverURL); 

      Log.i(LOG_TAG, url+""); 
      HttpGet method= new HttpGet(new URI(serverURL)); 
      HttpClient client = new DefaultHttpClient(); 
      HttpGet request = new HttpGet(); 
      request.setURI(new URI(serverURL)); 
      HttpResponse response = client.execute(method); 
      responseCode = response.getStatusLine().getStatusCode(); 

      Log.i(LOG_TAG,"Response code response "+response); 
      Log.i(LOG_TAG,"Response responseCode "+responseCode); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
+0

您是否已經找出導致錯誤的原因? –

0

其實你甚至不需要按照你的兩行代碼。

HttpGet request = new HttpGet(); 
request.setURI(new URI(serverURL)); 

一個HttpGet就夠了,你不需要它兩次。

0

不知道這是否重要,但我有確切的問題。

我正在做一些明確地80端口的東西,並刪除這條線使工作:

HttpHost host = new HttpHost(targetHost, 80, "http");