Notas do estudo JAVA HttpClient (2): envio de parâmetros do formulário POST, informações sobre solicitação de configuração

Use o HttpPost para criar objetos httpPost;

HttpPost httpPost=new HttpPost();

Para impedir a desconexão da rede, etc., configure as informações da solicitação e defina o limite de tempo máximo

 //配置请求信息
        RequestConfig config=RequestConfig.custom().setConnectTimeout(1000) //创建链接的最长时间 ms
        .setConnectionRequestTimeout(1000) //设置获取链接的最长时间 ms
        .setSocketTimeout(10*1000)  //设置数据传输的最长时间
        .build(); //得到Requsetconfig

Configure o URI de postagem e configure as informações de configuração para Publicar

//给请求设置配置
        httpPost.setConfig(config);
        URIBuilder uriBuilder=new URIBuilder("www.hll520.cn");
        httpPost.setURI(uriBuilder.build());

Defina os parâmetros de formulário de Post, vários parâmetros podem adicionar vários BasicNameValuePair

 //创建List集合,封装表单请求参数
        List<NameValuePair> pairs=new ArrayList<>();
        pairs.add(new BasicNameValuePair("keys","C#"));//BasicNameValuePair放入键值对
        //创建表单的Entity对象
        UrlEncodedFormEntity formEntity=null;
 try {
            //参数1是封装好的表单数据,参数二是编码格式
            formEntity=new UrlEncodedFormEntity(pairs,"UTF-8"); //使UTF-8封装
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

Parâmetros do pacote no post

//表单的Entity对象放入到post中
        httpPost.setEntity(formEntity);
  try {
            response=httpClient.execute(httpPost);//执行
        } catch (IOException e) {
            e.printStackTrace();
        }

Código completo

import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
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;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

public class HttpPostDome {
    //直接模拟
    public static void main(String[] a) {
        //生成一个可关闭的HTTP浏览器(相当于)
        CloseableHttpClient httpClient = HttpClients.createDefault();
        CloseableHttpResponse response = null;
        //创建http POST请求
        HttpPost httpPost = new HttpPost("http://www.5iacg.cn/");
        //配置请求信息
        RequestConfig config = RequestConfig.custom().setConnectTimeout(1000) //创建链接的最长时间 ms
                .setConnectionRequestTimeout(1000) //设置获取链接的最长时间 ms
                .setSocketTimeout(10 * 1000)  //设置数据传输的最长时间
                .build(); //得到Requsetconfig
        //给请求设置配置
        httpPost.setConfig(config);
        //配置请求头,模拟火狐浏览器
        httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0");
        //创建List集合,封装表单请求参数
        List<NameValuePair> pairs = new ArrayList<>();
        pairs.add(new BasicNameValuePair("keys", "C#"));//BasicNameValuePair放入键值对
        //创建表单的Entity对象
        UrlEncodedFormEntity formEntity = null;
        try {
            //参数1是封装好的表单数据,参数二是编码格式
            formEntity = new UrlEncodedFormEntity(pairs, "UTF-8"); //使UTF-8封装
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        //表单的Entity对象放入到post中
        httpPost.setEntity(formEntity);

        try {
            response = httpClient.execute(httpPost);//执行
        } catch (IOException e) {
            e.printStackTrace();
        }

        //获取网页源码
        HttpEntity httpEntity = response.getEntity();//获取网页源码
        try {
            String h = EntityUtils.toString(httpEntity, "UTF-8");//指定编码避免乱码
            System.out.println(h);
        } catch (IOException e) {
            //io异常(网络问题)
            e.printStackTrace();
        }

        //关闭HTTp
        try {
            response.close();
            httpClient.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

O resultado

Publicado 6 artigos originais · ganhou 7 · visualizações 255

Acho que você gosta

Origin blog.csdn.net/XiaoYunKuaiFei/article/details/105414599
Recomendado
Clasificación