之前在Android中,已经实现了GET请求,能抓取网页了:
且已经实现了对应字符编码解码为Unicode了:
【已解决】Android中,如何对某个编码(如GB2312)的字符串进行解码为Unicode字符
现在继续去实现对应的HttpClient的POST操作。
1.参考:
Android用Apache HttpClient 实现POST和Get请求
Android入门:用HttpClient模拟HTTP的GET和POST请求
android HttpClient post get
Android使用httpClient进行Post和Get发送参数
去写代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | /** Get response html from url and designated html charset and headerDict, postDict */ public String getUrlRespHtml(String url, HttpParams headerParams, String htmlCharset, List<NameValuePair> postDict) { // init String respHtml = "" ; String defaultCharset = "UTF-8" ; // check para if (htmlCharset == "" ) { htmlCharset = defaultCharset; } //init HttpClient httpClient = new DefaultHttpClient(); HttpUriRequest request; HttpResponse response; if (postDict != null ) { HttpPost postReq = new HttpPost(url); try { HttpEntity postBodyEnt = new UrlEncodedFormEntity(postDict); postReq.setEntity(postBodyEnt); } catch (Exception e){ } request = postReq; } else { HttpGet getReq = new HttpGet(url); request = getReq; } if (headerParams != null ) { request.setParams(headerParams); } try { response = httpClient.execute(request); if (response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){ respHtml = EntityUtils.toString(response.getEntity(), htmlCharset); } } catch (ClientProtocolException cpe) { // TODO Auto-generated catch block cpe.printStackTrace(); } catch (IOException ioe) { // TODO Auto-generated catch block ioe.printStackTrace(); } return respHtml; } |
然后有待后续测试。
因为暂时,去运行的时候,结果出错,折腾过程参见:
2.
【总结】
转载请注明:在路上 » 【记录】Android中利用HttpClient实现POST请求