2011-07-11 9 views
5

Mam następujący kod (uproszczone dla uproszczenia), która przenosi użytkownika do adresu URL określony:Android zamierza zamieścić URL?

Button b = (Button) findViewById(R.id.button); 
    b.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
       Intent i = new Intent(Intent.ACTION_VIEW); 
       i.setData(Uri.parse("http://example.com/myform/?a=b&c=d&e=f")); 
       if (i.resolveActivity(getPackageManager()) != null) {      
          startActivity(i); 
       } 
     } 
    }); 

który działa dobrze, ale jest trochę brzydki ponieważ parametry CGI są wyświetlane w pasku adresu na Androida przeglądarka internetowa (są to różne brzydkie klucze sesji itp.). Czy istnieje sposób, aby zrobić to samo, używając protokołu HTTP POST, aby były ukryte?

+1

Wątpię w to, ponieważ większość aplikacji, które mogą otrzymać takie intencje, nie będzie w stanie zrobić postu. –

+0

"Tak, możemy!" ... ale z pewną sztuczką. Sprawdź tę odpowiedź: http://stackoverflow.com/questions/4080517/launch-default-browser-with-intent-and-post-parameters#9909613 – Pascal

Odpowiedz

3

To nie jest możliwe w przeglądarce, ale byłoby to możliwe, gdyby użyto WebView:

byte[] post = EncodingUtils.getBytes("a=b&c=d&e=f", "BASE64"); 
webview.postUrl("http://example.com/myform/", post); 
+0

Dzięki, spróbuję tego. – Alistair

0

W końcu, ja nadal używać HTTP GET, ale ustawione cookie następnie przekierowanie przeglądarki do "czysty" URL bez parametrów sesji.

+0

Możesz zaakceptować własną odpowiedź, jeśli chcesz. – Flimm

Powiązane problemy