由于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就是返回的网页内容