Java使用HttpUtil.request方法可以发送请求即【Java访问url得到响应数据】

发布时间 2023-05-16 17:18:52作者: 锅巴编程

Java使用HttpUtil.request方法可以发送请求即【Java访问url得到响应数据】

注:这个工具类可以在网上找,也可以自己手写 ,手写的话需要用到以下依赖:

<dependency>
	<groupId>com.squareup.okhttp3</groupId>
	<artifactId>okhttp</artifactId>
	<version>3.10.0</version>
</dependency>

工具类代码附上:

public static String request(String url, HttpMethod httpMethod, String requestData) {
      try {
			logger.info("*********HTTPREQUEST START********");
			logger.info("*********requestUrl is " + url + " ********");
			
      OkHttpClient.Builder builder = new OkHttpClient.Builder()
	                .connectTimeout(15, TimeUnit.SECONDS)
	                .writeTimeout(20, TimeUnit.SECONDS)
	                .readTimeout(20, TimeUnit.SECONDS);
			
			
			OkHttpClient client = builder.build();
			Request request = null;
			if (httpMethod == HttpMethod.POST) {
				if (url.contains("?") && StringUtils.isBlank(requestData)) {
					Builder formBodyBuilder = new Builder();
					String[] args = url.split("[?]");
					url = args[0];
					String[] params = args[1].split("&");
					for (String param : params) {
						String[] keyAndValues = param.split("=");
						formBodyBuilder.add(keyAndValues[0], keyAndValues.length == 1 ? "" : keyAndValues[1]);
					}
					request = new Request.Builder().url(url).post(formBodyBuilder.build()).build();
				} else {
					RequestBody requestBody = RequestBody.create(MEDIA_TYPE_JSON, requestData);
					logger.info("*********requestBody is " + requestData + " ********");
					request = new Request.Builder().url(url).post(requestBody).build();
				}
			} else {
				request = new Request.Builder().url(url).build();
			}
			
			Response response = client.newCall(request).execute();
			String responseBody = response.body().string();
			logger.info("*********responseBody is " + responseBody);
			logger.info("********* SUCCESS END********");
			return responseBody;
		} catch (Exception ex) {
			logger.error("********* ERROR END********", ex);
		}
		return null;
	}
}