2014-02-13 3 views
13

Android 문서에는 데이터를 게시하고 헤더를 추가하는 두 개의 개별 메소드가 있음을 알 수 있습니다.Android WebView 맞춤 요청 헤더 요청

For setting Headers 
public void loadUrl (String url, Map<String, String> additionalHttpHeaders) 


For setting Post Data 
public void postUrl (String url, byte[] postData) 

하지만 실제로 필요한 것은 헤더와 함께 데이터를 게시하는 것입니다. (두 가지 작업을 모두 수행하는 단일 메서드가 필요하다는 의미입니까?)

누군가 나를 도와주세요.

감사 :

+1

안녕 :

는 여기에 몇 가지 의견 내 코드입니다. 나는 이것이 오래되었음을 알고 있지만, 당신이하는 것과 똑같은 것을 성취해야합니다. 깨끗한 솔루션을 찾을 수 있었습니까? 감사. – Cosmin

답변

4

나는 최근에 같은 문제에 부딪 쳤고 몇 시간이 지나면 해결되었다.

HttpClient httpclient = new DefaultHttpClient(); 

HttpPost httpPost = new HttpPost(getPostUrl()); 

// example of adding extra header "Referer" 
httpPost.addHeader("Referer", getReferer()); 

ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>(); 

for (PostItem postItem : getPostItems()) { 
    // key value post pairs 
    // add post parameters in array list 
    postParameters.add(new BasicNameValuePair(postItem.getKey(), postItem.getValue())); 
} 

HttpResponse response = null; 

try { 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    httpPost.setEntity(new UrlEncodedFormEntity(postParameters)); 

    response = httpclient.execute(httpPost); 

    BasicResponseHandler responseHandler = new BasicResponseHandler(); 
    String htmlString = responseHandler.handleResponse(response); 

    // important!! is to fill base url 
    mWebView.loadDataWithBaseURL(getPostUrl(), htmlString, "text/html", "utf-8", null); 

} catch (Exception e){ 
    // handle errors 
} 
+0

Android에서 HttpClient가 삭제 된 것 같습니다. 이 코드의 대안을 공유해 주시겠습니까? –