Android的Post请求的请求参数分为好几种种,既Content-type的请求类型:
connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");//使用的是表单请求类型
对应的参数是:
String params = "a=a&b=b&c=c&d=d";
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");//使用的是表单请求类型
对应的数据是:
String params = "{a:a,b:b,c:c}";
application/x-javascript text/xml->xml数据
application/x-javascript->json对象
application/x-www-form-urlencoded->表单数据
application/json;charset=utf-8 -> json数据
这里给出一个HttpURLConnection的请求例子,使用的是表单请求:
//发送图片到后台
private void xinYanShiBie(final String imageString) {
//请求
new Thread(new Runnable() {
@Override
public void run() {
try {
Log.e("上传", "开始");
// 0.相信证书
// 1. 获取访问地址URL
URL url = new URL("http://10.6.20.13:8080/s/idcard/uploadBack");
// 2. 创建HttpURLConnection对象
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 3. 设置请求参数等
// 请求方式
connection.setRequestMethod("POST");
// 超时时间
connection.setConnectTimeout(30000);
connection.setReadTimeout(30000);
// 设置是否输出
connection.setDoOutput(true);
// 设置是否读入
connection.setDoInput(true);
// 设置是否使用缓存
connection.setUseCaches(false);
// 设置此 HttpURLConnection 实例是否应该自动执行 HTTP 重定向
connection.setInstanceFollowRedirects(true);
// 设置使用标准编码格式编码参数的名-值对
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");//使用的是表单请求类型
// 连接
connection.connect();
// 4. 处理输入输出
// 写入参数到请求中
String params = "member_id" + "=" + "8000013189" + "&" +
"data_type" + "=" + "json" + "&" +
//"image" + "=" + URLEncoder.encode(imageString, "utf-8");//如果图片使用Base64 的 DEFAULT 那么传输的时候使用URLEncoder编码一下被Base64编码过的图片,否则会出现\n \r
"image" + "=" + imageString;//如果图片使用Base64 的 NO_WRAP 那么不需求编码,直接传输
Log.e("上传", "请求参数:" + params);
OutputStream out = connection.getOutputStream();
out.write(params.getBytes());
out.flush();
out.close();
// 从连接中读取响应信息
String msg = "";
int code = connection.getResponseCode();
if (code == 200) {
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
msg += line + "\n";
}
reader.close();
}
// 5. 断开连接
connection.disconnect();
//loading
// 处理结果
//sysData(msg);
Log.e("上传", "请求结果:" + msg);
} catch (Exception e) {
//loading
Log.e("上传", "异常:" + e);
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "请求出错,请检查网络设置!", Toast.LENGTH_LONG).show();
}
});
}
}
}).start();
}