2011-07-11 31 views
5

Tôi đã đoạn mã sau (đơn giản vì đơn giản) mà đưa người dùng đến URL được chỉ định:Ý định Android để POST 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); 
       } 
     } 
    }); 

mà hoạt động tốt, nhưng là một chút xấu xí vì các thông số CGI được hiển thị trong thanh địa chỉ URL của Android trình duyệt web (chúng là các khóa phiên xấu xí khác nhau, v.v ...). Có cách nào để thực hiện tương tự bằng cách sử dụng HTTP POST để chúng bị ẩn không?

+1

Tôi nghi ngờ điều đó, vì hầu hết các ứng dụng có thể nhận được ý định như vậy sẽ không thể thực hiện một bài đăng. –

+0

"Vâng, chúng tôi có thể!" ... nhưng với một mẹo. Kiểm tra câu trả lời này: http://stackoverflow.com/questions/4080517/launch-default-browser-with-intent-and-post-parameters#9909613 – Pascal

Trả lời

3

Đó là không thể trong trình duyệt, nhưng nó sẽ là tốt nếu bạn sử dụng một WebView:

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

Cảm ơn, tôi sẽ cố gắng đó. – Alistair

0

Cuối cùng, tôi vẫn tiếp tục sử dụng HTTP GET, nhưng thiết lập một cookie sau đó chuyển hướng trình duyệt tới một URL 'sạch' không có tham số phiên.

+0

Bạn có thể chấp nhận câu trả lời của riêng mình nếu bạn muốn. – Flimm

Các vấn đề liên quan