2013-12-05 4 views
0

Я делаю логин google через GoogleTransport и ClientLogin.Положите запрос POST с HttpRequest

private final GoogleTransport transport = new GoogleTransport(); 
private final ClientLogin authenticator = new ClientLogin(); 

Затем я обращаюсь к веб-сайту Picasa.

transport.setVersionHeader(PicasaWebAlbums.VERSION);   
     transport.applicationName = "google-picasaandroidsample-1.0"; 
     HttpTransport.setLowLevelHttpTransport(ApacheHttpTransport.INSTANCE); 
     authenticator.authTokenType = PicasaWebAlbums.AUTH_TOKEN_TYPE; 
     authenticator.username = StaticVariables.USER_NAME+StaticVariables.USER_DOMAIN; 
     authenticator.password = StaticVariables.USER_PASSWORD; 


     try { 
      authenticator.authenticate().setAuthorizationHeader(transport); 
      HttpRequest request = transport.buildPostRequest(); 
      request.setUrl("https://picasaweb.google.com/data/feed/api/user/default"); 
      request.execute(); 
     } catch (HttpResponseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

Вышеуказанное работает нормально.

Теперь я хочу установить запрос POST. Но метод buildPostRequest() не поддерживает какой-либо параметр String. Таким образом, невозможно отправить какие-либо данные по URL-адресу. Как его достичь? Пожалуйста помоги.

ответ

0

Вы можете использовать HttpPost с NameValuePair

private boolean sendData(ArrayList<NameValuePair> data) { 
    try { 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost(YOUR_URL); 
     httppost.setEntity(new UrlEncodedFormEntity(data)); 
     HttpResponse response = httpclient.execute(httppost); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return false; 
    } 
} 

Затем создайте ваши пары Имя значения в другой метод, как

private ArrayList<NameValuePair> setupData() { 
     ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
       3); 
     nameValuePairs.add(new BasicNameValuePair(USERID, SAMPLE_USER_ID); 
     nameValuePairs.add(new BasicNameValuePair(USERNAME, SAMPLE_USER_NAME)); 
     return nameValuePairs; 
    } 

Atlast вызвать метод отправки данных в AsyncTask или Intent service в sendData(setupdata())

0

Данные в почтовом запросе обычно отправляются в теле запроса.