httpclient post 带参数请求

2016-03-16|来源:

 httpclient post带参数请求的步骤:
1、声明NameValuePair列表对象,把相关的参数添加到此列表中
 List<NameValuePair> parameters = new ArrayList<NameValuePair>(0);
2、初始化BasicNameValuePair对象,就是参数
 parameters.add(new BasicNameValuePair("scope", "project"));
 parameters.add(new BasicNameValuePair("q", "java"));
3、构造一个form表单式的实体UrlEncodedFormEntity,并把List<NameValuePair>参数列表添加到该表单中
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters);
4、将请求实体设置到httpPost对象中
httpPost.setEntity(formEntity);


示例:

package com._656463.httpclient;
  
import java.util.ArrayList;
import java.util.List;
  
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
  
public class DoPOSTParam {
    public static void main(String[] args) throws Exception {
        // 创建Httpclient对象
        CloseableHttpClient httpclient = HttpClients.createDefault();
  
        // 创建http POST请求
        HttpPost httpPost = new HttpPost("http://www.oschina.net/search");
  
        // 设置2个post参数,一个是scope、一个是q
        List<NameValuePair> parameters = new ArrayList<NameValuePair>(0);
        parameters.add(new BasicNameValuePair("scope", "project"));
        parameters.add(new BasicNameValuePair("q", "java"));
        // 构造一个form表单式的实体
        UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters);
        // 将请求实体设置到httpPost对象中
        httpPost.setEntity(formEntity);
  
        httpPost.setHeader(
                "User-Agent",
                "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36");
  
        CloseableHttpResponse response = null;
        try {
            // 执行请求
            response = httpclient.execute(httpPost);
            // 判断返回状态是否为200
            if (response.getStatusLine().getStatusCode() == 200) {
                String content = EntityUtils.toString(response.getEntity(),
                        "UTF-8");
                System.out.println(content);
            }
        } finally {
            if (response != null) {
                response.close();
            }
            httpclient.close();
        }
    }
}

本文参考网络


相关问答

更多

java httpclient post方法求助

一: URL 只能使用 ASCII 字符集来通过因特网进行发送。 由于 URL 常常会包含 ASCII 集合之外的字符,URL 必须转换为有效的 ASCII 格式。 URL 编码使用 "%" 其后跟随两位的十六进制数来替换非 ASCII 字符。 URL 不能包含空格。URL 编码通常使用 + 来替换空格。 二:%(ascii value) %25 (URL-encode) 三: String URL="%2bxxxx"; String ENCODING="utf-8"; String strURL ...

java httpclient怎么选择get或者post方法

HttpPost httpPost = new HttpPost(url); List parameters = new ArrayList(); parameters.add(new BasicNameValuePair("参数名", "值")); UrlEncodedFormEntity formEntiry = new UrlEncodedFormEntity(parameters); httpPost.setEntity(formEntiry); HttpResponse response ...

java 模拟post登录

这个要分两步,先用GET方法取得页面源码,分析出mpc的值,然后用POST方法发送数据就能登录了。当然一切工作之前要设置好CookieHandler post页面: http://www.songtaste.com/info_oper.php?tag=signin&pageref= post参数就4个而已, name=yourName&pwd=yourPassword&B12=Login&mpc=分析得到的mpc 看如下例子: http://zhidao.baidu.com/question/14 ...

java 模拟登录问题,使用httpclient

需要先判断一下是否登陆成功,只要登陆成功client对象就应该得到cookie了,你就可以用这个client对象直接请求你需要的页面。如果不用状态码判断登陆成功,状态码可能就没什么用了。

如何使用HttpClient包实现JAVA发起HTTP请求

HttpClient可以发起Http请求. 比如要获取某页面, 那么需要分析, 是POST请求还是GET请求. 分析请求的标题头 ,参数 ,cookie等, 所以 , 分析页面请求, 才是关键, 分析好了, 直接按套路,设置标头, 设置参数, 设置cookie, 然后提交POST/GET就可以了 推荐win10自带的EDGE浏览器, 按F12弹出开发窗口, 里面详细记录了http请求

专题教程

JAVA概述
第一部分:java入门基础
第二部分:java常用类
第三部分:jdbc系列教程
第四部分:java高级特征
快速入门
Gson教程
快速了解 jdk8 新特征

相关文章

更多

最近更新

更多