Post请求的3种编码格式:application/x-www-form( 二 )


2、在代码中使用/form-data编码格式设置属性调用接口时 , 其中的值可以在设置-Type时指定 , 让服务器知道如何拆分它接受的参数 。通过以下代码的调用接口:
private static String doPost(String strUrl, Map params, String boundary) {String result = "";try {URL url = new URL(strUrl);HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();urlConnection.setRequestMethod("POST");urlConnection.setConnectTimeout(30000);urlConnection.setReadTimeout(30000);urlConnection.setDoOutput(true);//设置通用请求属性为multipart/form-dataurlConnection.setRequestProperty("content-type", "multipart/form-data;boundary=" + boundary);DataOutputStream dataOutputStream = new DataOutputStream(urlConnection.getOutputStream());for (String key : params.keySet()) {String value = http://www.kingceram.com/post/params.get(key);//注意!此处是/r(回车:将当前位置移到本行开头)、/n(换行:将当前位置移到下行开头)要一起使用dataOutputStream.writeBytes("--" + boundary + "\r\n");dataOutputStream.writeBytes("Content-Disposition: form-data; name=\"" + encode(key) + "\"\r\n");dataOutputStream.writeBytes("\r\n");dataOutputStream.writeBytes(encode(value) + "\r\n");}//最后一个分隔符的结尾后面要跟"--"dataOutputStream.writeBytes("--" + boundary + "--");dataOutputStream.flush();dataOutputStream.close();InputStream inputStream = urlConnection.getInputStream();byte[] data = http://www.kingceram.com/post/new byte[1024];StringBuilder sb = new StringBuilder();while (inputStream.read(data) != -1) {String s = new String(data, Charset.forName("utf-8"));sb.append(s);}result = sb.toString();inputStream.close();} catch (Exception e) {e.printStackTrace();}return result;}private static String encode(String value) throws UnsupportedEncodingException {return URLEncoder.encode(value, "UTF-8");}public static void main(String[] args) {Map params = new HashMap<>();params.put("firstName", "Mickey");params.put("lastName", "Mouse");//自定义boundary , 有两个要求:使用不会出现在发送到服务器的HTTP数据中的值;并在请求消息中的分割位置都使用相同的值String boundary = "abcdefg";String str = doPost("http://localhost:8888/testFile", params, boundary);System.out.println(str);}
通过debug , 可以看出的值如下:

Post请求的3种编码格式:application/x-www-form

文章插图
三、使用测试接口时 1、POST请求 -> Body -> x-www-form-
Post请求的3种编码格式:application/x-www-form

文章插图
当切换为x-www-form-时 , 会自动添加-Type:/x-www-form-
Post请求的3种编码格式:application/x-www-form

文章插图
当请求Send后 , 此时点Code , 可以查看到和开发工具中( 处的-Type和Form Data)一样的数据
Post请求的3种编码格式:application/x-www-form

文章插图
2、POST请求 -> Body -> form-data
相当于html表单请求 , value可为Text或文件 。
Post请求的3种编码格式:application/x-www-form

文章插图
可以不用手动指定编码格式 , 也可以指定编码为/form-data
Post请求的3种编码格式:application/x-www-form

文章插图
划线处的分割线应该是被省略了 。
Post请求的3种编码格式:application/x-www-form

文章插图
可以更改左上角的类型 , 来查看相应的代码 , 常见的是下面三种: