HttpClient-Json格式、设置超时

630 阅读2分钟

HttpClient-Json格式、设置超时

目录


1、Json格式

2、设置超时


1、Json格式

a、创建Json类。

发送数据将数据类型转为Json格式。

接收数据将数据类型转为Json格式。

脚本代码:

package com.test.demo;

import java.io.IOException;

import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;

/**
 * Json格式
 *
 * @author wangmcn
 *
 */
public class Json {

       public static void main(String[] args) throws ClientProtocolException, IOException {

              // 创建CloseableHttpClient对象
              CloseableHttpClient httpclient = HttpClients.createDefault();
              // 创建HttpPost对象
              HttpPost httpPost = new HttpPost("http://localhost:8083/json");

              // 设置请求头信息
              httpPost.setHeader("content-type", "application/json");
              // 添加Json参数
              JSONObject param = new JSONObject();
              param.put("username", "admin");
              param.put("password", "123456");
              // 将参数信息添加到方法中
              StringEntity entity = new StringEntity(param.toString(), "utf-8");
              httpPost.setEntity(entity);

              // 执行Post请求
              CloseableHttpResponse response = httpclient.execute(httpPost);
              // 获取响应状态
              System.out.println("获取响应状态: " + response.getStatusLine().getStatusCode());
              // 获取响应结果
              String result = EntityUtils.toString(response.getEntity(), "utf-8");
              // 将返回的响应结果字符串转化成为Json对象
              JSONObject resultJson = new JSONObject(result);
              // 获取网页源码
              System.out.println("获取网页源码:" + resultJson);
              // 关闭流和释放系统资源
              response.close();
              // 关闭客户端
              httpclient.close();
             
       }

}

b、运行结果:

图片


2、设置超时

a、创建Overtime类。

setConnectTimeout() 设置连接超时时间,单位毫秒。
setSocketTimeout() 请求获取数据的超时时间,单位毫秒。
setConnectionRequestTimeout() 设置从connect Manager获取Connection超时时间,单位毫秒。

脚本代码:

package com.test.demo;

import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

/**
 * 设置超时
 *
 * @author wangmcn
 *
 */

public class Overtime {

       public static void main(String[] args) throws ClientProtocolException, IOException {

              // 创建CloseableHttpClient对象
              CloseableHttpClient httpclient = HttpClients.createDefault();
              // 创建HttpGet对象
              HttpGet httpget = new HttpGet("http://central.maven.org/maven2/");

              // 设置超时
              RequestConfig requestConfig = RequestConfig.custom()
                            .setConnectTimeout(15000) // 设置连接超时时间,单位毫秒
                            .setSocketTimeout(15000) // 请求获取数据的超时时间,单位毫秒
                            .setConnectionRequestTimeout(15000) // 设置从connect Manager获取Connection超时时间,单位毫秒
                            .build();
              httpget.setConfig(requestConfig);

              // 执行Get请求
              CloseableHttpResponse response = httpclient.execute(httpget);
              // 获取响应状态
              System.out.println("获取响应状态: " + response.getStatusLine().getStatusCode());
              // 获取返回实体
              HttpEntity entity = response.getEntity();
              // 获取网页源码
              System.out.println("获取网页源码:" + EntityUtils.toString(entity, "utf-8"));
              // 获取响应内容类型
              System.out.println("获取响应内容类型:" + entity.getContentType().getValue());
              // 关闭流和释放系统资源
              response.close();
              // 关闭客户端
              httpclient.close();

       }

}

b、运行结果:

图片

微信公众号:AllTests软件测试

分享软件测试、自动化测试、性能测试、测试开发等技术文章与资源,欢迎关注!