Http Post请求的三种常见方式form表单 io流等

1 form 表单的提交形式

提交的时候只能其中的一种形式去提交

   1 form表单的提交形式为构建键值对的形式:

       eg:

List<NameValuePair> values = new ArrayList<NameValuePair>();
BasicNameValuePair base = new BasicNameValuePair("name","value");
values.add(base);
values.add(new BasicNameValuePair("name","value1"));

HttpEntity entity = new UrlEncodedFormEntity(values,"utf-8");

post.setEntity(entity);

      


 2  io流的形式 主要是以字符串 字节数组 文件字符串、字节数组、输入流和文件: StringEntity,ByteArrayEntity,InputStreamEntity和FileEntity

StringEntity sEnt = new StringEntity("<html>aaaaa</html>");
post.setEntity(sEnt);


3 form表单中含有文件的提交方式  MultipartEntity

 MultipartEntity entity = new MultipartEntity();

entity.addPart("name", new StringBody("value1", Charset.forName("UTF-8")));
entity.addPart("age", new StringBody("value2", Charset.forName("UTF-8")));
entity.addPart("file", new FileBody(new File("D:/test.txt"))); //需要上传的文件

post.setEntity(entity);


部分代码:

@Test
public void post(){
HttpClient client = HttpClients.createDefault();
HttpPost post = new HttpPost("http://www.baiji.com.cn/goods-7138.html");
InputStream is;
StringBuilder sb = new StringBuilder();
List<NameValuePair> values = new ArrayList<NameValuePair>();
BasicNameValuePair base = new BasicNameValuePair("name","value");
values.add(base);
values.add(new BasicNameValuePair("name","value1"));
try {
HttpEntity entity = new UrlEncodedFormEntity(values,"utf-8");
//StringEntity sEnt = new StringEntity("<html>aaaaa</html>");

//要设置字符编码集,通过查看源码发现默认的是ios-8859-1,在提交的时候需要注意字符编码集

//public static final Charset DEF_CONTENT_CHARSET = Consts.ISO_8859_1;

StringEntity sEnt = new StringEntity("<html>aaaaa</html>","utf-8");
post.setEntity(sEnt); //io流的形式
post.setEntity(entity); //form表单的形式  可以分别注释查看最后的请求结果
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
try {
HttpResponse response = client.execute(post);
byte[] b = new byte[10240];
int len  =-1;
is = response.getEntity().getContent();
while((len=is.read(b))!=-1){
sb.append(new String(b,0,len));
}
System.out.println(sb.toString());
} catch (IllegalStateException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
}


//如何查看请求不同形式可以通过抓包工具去查看 Wireshark

 关于Wireshark的使用网上很多,授人以鱼不如授人以渔!


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值