2012-08-28 46 views
10

我需要將數據發佈到服務器(帶有「referer」標題字段)並在Webview中加載響應。在Android上發送Post請求和HttpHeaders

現在,有不同的方法(從Android WebView)做它的部分,像有:

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

加載給定的URL與指定的附加HTTP標頭。

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

使用「數據」方案URL將給定數據加載到此WebView中。

void postUrl(String url, byte[] postData) 

使用「POST」方法將postData加載到此WebView中。

loadUrl()允許發送HttpHeaders但不允許發送發佈數據,其他方法似乎不允許發送HttpHeaders。我錯過了什麼,或者我正在嘗試的是不可能的?

+0

任何一個有這個運氣嗎? – Ghedeon

+0

這裏有誰可以幫助解決這個問題? – dcool

+0

我也有同樣的問題。請任何人有任何鏈接來幫助我 – ashraful

回答

1

您可以手動執行HttpPost這樣的:

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); 

獲取responseString

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(); 

現在,您可以通過使用loadData()htmlyourWebView

yourWebView.loadData(html ,"text/html", "UTF-8");