2011-03-11 76 views
0

我只是想通過HTTP POST發送我的Google帳戶驗證數據。我已經構建了HTTPpost(URL編碼的ArrayList名稱 - 值對)並執行HTTPClient以獲取HTTPResponse。然而,這是問題開始的地方,當我試圖調用其關聯方法之一(getStatusLine或getEntity)時,我返回的HTTPResponse似乎會返回一個異常。我還嘗試通過執行一個簡單的「if(null)else」類型檢查來檢查「null」響應,但仍然沒有運氣。Android應用程序 - Google授權通過HTTP Post

這是因爲我使用模擬器的問題嗎?

----- ----- UPDATE

我發現,我得到一個空指針反應,從而導致該異常。所以,我訪問Google API的方式存在問題。該URL是「https://www.google.com/accounts/ClientLogin」,「Email」和「Passwd」是我用於POST請求的兩個參數。

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("<URL HERE>"); 

try { 

    List<NameValuePair> parameters = new ArrayList<NameValuePair>(2); 
    parameters.add(<name_value_pair>); 
    parameters.add(<name_value_pair>); 
    httppost.setEntity(new UrlEncodedFormEntity(parameters)); 


    HttpResponse response = httpclient.execute(httppost); 

    StatusLine returned_status = response.getStatusLine(); 
    int status_code = returned_status.getStatusCode(); 


} catch (ClientProtocolException e) { 
    // TODO Auto-generated catch block 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
} 

}

+1

一個叫Base64編碼& Android版本2.1 &庫你有INTERNET權限設置? – 2011-03-11 17:35:02

+0

是...... !!!我確實有它設置...! – Hari 2011-03-11 17:37:56

+0

另一件我想提到的是,我已經檢查了網址,看它是否是畸形的。不是它應該受到傷害(我應該收到一個ERROR響應)。我在Web瀏覽器上輸入了URL(帶有名稱 - 值對),並且我從Google服務器收到200 OK響應。 – Hari 2011-03-11 17:39:29

回答

2

而不是使用httpPost使用的HttpRequest &也u必須使用上面

String data; 
    HttpParams httpParameters; 


    HttpClient client; 
    HttpResponse response; 
    String userAuth; 

    httpParameters = new BasicHttpParams(); 
        String auth = android.util.Base64.encodeToString(
          (username + ":" + userpwd).getBytes("UTF-8"), 
          android.util.Base64.NO_WRAP 
         ); 
         HttpGet request = new HttpGet(StaticURL.uMain+resourceURI); 

         request.addHeader("Authorization", "Basic "+ auth); 

        HttpConnectionParams.setSoTimeout(httpParameters, timeoutConnection); 
        client = new DefaultHttpClient(httpParameters); 

        response = client.execute(request); 
        userAuth = EntityUtils.toString(response.getEntity()); 

        System.out.println("Data. in login.."+userAuth);