使用 httpurlconnection 在android上post操作

来源:互联网 发布:网络专升本 编辑:程序博客网 时间:2024/04/30 18:35

由于httppost被遗弃了,将项目中的一些post操作改成了httpurlconnection


相比httppost,httpurlconnection麻烦的地方在于需要处理输入输出流和将参数转化成字符串


标准的写法应该是

                            try {                                URL url = new URL(API_model.getInstance().record_submit_single());                                HttpURLConnection conn = (HttpURLConnection) url.openConnection();                                conn.addRequestProperty("encoding","UTF-8");                                conn.setDoInput(true);                                conn.setDoOutput(true);                                conn.setRequestMethod("POST");                                OutputStream os = conn.getOutputStream();                                OutputStreamWriter osw = new OutputStreamWriter(os);                                BufferedWriter writer = new BufferedWriter(osw);                                List<NameValuePair> params = new ArrayList<>();                                params.add(new BasicNameValuePair("member_id", Global.getInstance().getMember_id()));                                params.add(new BasicNameValuePair("answer", checklist_choice));                                params.add(new BasicNameValuePair("record_item_id", level2_record_item_id));                                params.add(new BasicNameValuePair("attempt", Attempt));                                writer.write(getQuery(params));                                writer.flush();                                InputStream is = conn.getInputStream();                                InputStreamReader isr = new InputStreamReader(is);                                BufferedReader br = new BufferedReader(isr);                                String line;                                StringBuilder builder = new StringBuilder();                                while ((line = br.readLine())!= null){                                    builder.append(line);                                }                                writer.close();                                osw.close();                                os.close();                                br.close();                                isr.close();                                is.close();                                System.out.println("builder:"+builder.toString());                            } catch (ProtocolException e) {                                e.printStackTrace();                            } catch (MalformedURLException e) {                                e.printStackTrace();                            } catch (UnsupportedEncodingException e) {                                e.printStackTrace();                            } catch (IOException e) {                                e.printStackTrace();                            }
API_model.getInstance().record_submit_single()就是目标地址

getQuery()就是将参数转化成字符串

他的代码如下


    private String getQuery(List<NameValuePair> params) throws UnsupportedEncodingException {        StringBuilder result = new StringBuilder();        boolean first = true;        for (NameValuePair pair : params) {            if (first)                first = false;            else                result.append("&");            result.append(URLEncoder.encode(pair.getName(), "UTF-8"));            result.append("=");            result.append(URLEncoder.encode(pair.getValue(), "UTF-8"));        }        System.out.println("result:" + result);        return result.toString();    }
builder就是返回的网页内容

0 0
原创粉丝点击