2012-08-28 32 views
10

Tôi cần đăng dữ liệu lên máy chủ (với trường tiêu đề "tham chiếu") và tải phản hồi trong Webview.Gửi yêu cầu đăng cùng với HttpHeaders trên Android

Bây giờ, có nhiều phương pháp khác nhau (từ Android WebView) để làm bộ phận của nó, giống như có:

void loadUrl(String url, Map<String, String> additionalHttpHeaders) 

tải URL được với các tiêu đề HTTP bổ sung quy định.

void loadData(String data, String mimeType, String encoding) 

Tải dữ liệu đã cho vào WebView này bằng cách sử dụng URL lược đồ 'dữ liệu'.

void postUrl(String url, byte[] postData) 

Tải URL bằng postData bằng phương thức "POST" vào WebView này.

loadUrl() cho phép gửi HttpHeaders nhưng không cho phép gửi dữ liệu bài đăng, các phương pháp khác dường như không cho phép gửi HttpHeaders. Tôi đang thiếu một cái gì đó hoặc những gì tôi đang cố gắng là không thể?

+0

bất kỳ ai có may mắn với điều này? – Ghedeon

+0

bất kỳ ai ở đây có thể trợ giúp về vấn đề này? – dcool

+0

Tôi cũng có cùng một vấn đề. xin vui lòng bất cứ ai có bất kỳ liên kết để giúp tôi – ashraful

Trả lời

1

Bạn có thể thực hiện HttpPost bằng tay như thế này:

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("http://www.yoursite.com/postreceiver"); 

// generating your data (AKA parameters) 
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
nameValuePairs.add(new BasicNameValuePair("ParameterName", "ParameterValue")); 
// ... 

// adding your headers 
httppost.setHeader("HeaderName", "HeaderValue"); 
// ... 

// adding your data 
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

HttpResponse response = httpclient.execute(httppost); 

Lấy response như String:

BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); 
StringBuilder builder = new StringBuilder(); 
for (String line = null; (line = reader.readLine()) != null;) { 
    builder.append(line).append("\n"); 
} 
String html = builder.toString(); 

Bây giờ bạn có thể đặt html vào yourWebView bằng cách sử dụng loadData():

yourWebView.loadData(html ,"text/html", "UTF-8"); 
Các vấn đề liên quan