javafx 创建windows程序记录5 网络请求

网络请求准备

1.导包

自行前往maven仓库下载
fastjson-1.2.62.jar
okhttp-3.8.1.jar
okio-1.13.0.jar
导包方式 右键 add as library…

2.使用OKHTTP封装请求类

HttpCallBack

package sample.utils;

public interface HttpCallBack {
	void success(String success);

	void fail(String fail);
}

httputils

package sample.utils;

public interface HttpCallBack {
	void success(String success);

	void fail(String fail);
}
/
package sample.utils;

import com.alibaba.fastjson.JSONObject;
import okhttp3.*;
import org.omg.Messaging.SYNC_WITH_TRANSPORT;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;

public class HttpUtil {
	private static String PrefixURL ="http://localhost:9000";
	public static String uri_login = "/login";
	
	private final OkHttpClient mOkHttpClient;
	private volatile static HttpUtil INSTANCE;

	private Interceptor netCacheInterceptor = new Interceptor() {
		@Override
		public Response intercept(Chain chain) throws IOException {
			Request request = chain.request();
			HttpUrl httpUrl = request.url().newBuilder().build();
			Request build;
			System.out.println("请求地址》》" + httpUrl.url());
			if (!StringUtil.isEmpty(session)) {
				build = request.newBuilder()
						// add common header
						.addHeader("contentType", "application/json; charset=utf-8").addHeader("cookie", session)
						.url(httpUrl).build();
			} else {
				build = request.newBuilder()
						// add common header
						.addHeader("contentType", "application/json; charset=utf-8").url(httpUrl).build();
			}
			Response response = chain.proceed(build);
			return response;
		}
	};

	public HttpUtil() {
		OkHttpClient.Builder builder = new OkHttpClient.Builder();
		// 设置超时
		builder.connectTimeout(60, TimeUnit.SECONDS);
		builder.readTimeout(60, TimeUnit.SECONDS);
		builder.writeTimeout(60, TimeUnit.SECONDS);
		// 错误重连
		// builder.retryOnConnectionFailure(true);
		//设置拦截器
		// builder.addInterceptor(netCacheInterceptor);
		mOkHttpClient = builder.build();
	}
//单例
	public static HttpUtil getInstance() {
		if (INSTANCE == null) {
			synchronized (HttpUtil.class) {
				if (INSTANCE == null) {
					INSTANCE = new HttpUtil();
				}
			}
		}
		return INSTANCE;
	}
	
	/**
	get请求
	*/
	public void get(String uri, HttpCallBack callBack) {
		Request request = new Request.Builder().addHeader("Content-Type", "application/json; charset=utf-8")
				.url(PrefixURL + uri).get().build();
		Call call = mOkHttpClient.newCall(request);
		call.enqueue(new Callback() {
			@Override
			public void onFailure(Call call, IOException e) {
				callBack.fail("请求失败");
			}

			@Override
			public void onResponse(Call call, okhttp3.Response response) throws IOException {
				boolean successful = response.isSuccessful();  
				String success = response.body().string();  //返回结果
				if (successful) {
					callBack.success(success);
				} else {
					callBack.fail("请求失败");
				}
			}
		});
	}

	private String session;  //请求的session
	public void post(Map<String, String> map, String uri, HttpCallBack callBack) {
		FormBody.Builder builder = new FormBody.Builder();
		for (String in : map.keySet()) {
			builder.add(in, map.get(in));
		}
		RequestBody body = builder.build();
		Request.Builder builder1 = new Request.Builder();
		builder1.addHeader("Content-Type", "application/json; charset=utf-8");
		if (!StringUtil.isEmpty(session)) {
			builder1.addHeader("cookie", session);
		}
		Request request = builder1.url(PrefixURL + uri).post(body).build();
		Call call = mOkHttpClient.newCall(request);
		call.enqueue(new Callback() {
			@Override
			public void onFailure(Call call, IOException e) {
				System.out.println("请求失败");
				callBack.fail("请求失败");
			}

			@Override
			public void onResponse(Call call, okhttp3.Response response) throws IOException {
				Headers headers = response.headers();
				List<String> cookies = headers.values("Set-Cookie");
				if (cookies.size() > 0) {
					String s = cookies.get(0);
					session = s.substring(0, s.indexOf(";"));  //取到session 用户下次请求 无session不影响
					System.out.println("session>>>" + session);
				}

				boolean successful = response.isSuccessful();
				String success = response.body().string();
				// System.out.println("请求结果>>>"+success);
				if (successful) {
						callBack.success(success);
				} else {
					  callBack.fail("请求失败");
				}
			}
		});
	}

/**
* 带token请求
*/
	public void postToken(Map<String, String> map, String uri, HttpCallBack callBack, String token) {
		FormBody.Builder builder = new FormBody.Builder();
		for (String in : map.keySet()) {
			builder.add(in, map.get(in));
		}
		RequestBody body = builder.build();
		Request request = new Request.Builder().addHeader("Content-Type", "application/json; charset=utf-8")
				.addHeader("Authorization", "Bearer " + token).url(PrefixURL + uri).post(body).build();
		Call call = mOkHttpClient.newCall(request);
		call.enqueue(new Callback() {
			@Override
			public void onFailure(Call call, IOException e) {
				callBack.fail("请求失败");
			}

			@Override
			public void onResponse(Call call, okhttp3.Response response) throws IOException {
				boolean successful = response.isSuccessful();
				String success = response.body().string();
				if (successful) {
					callBack.success(success);
				} else {
					callBack.fail("请求失败");
				}
			}
		});
	}

	private String BASE_PIC_URL = "http://localhost:8888";
 //上传文件
	public void uploadFile(Map<String, String> map, File[] files, String uri, HttpCallBack callBack) {
		MultipartBody.Builder builder = new MultipartBody.Builder();
		builder.setType(MultipartBody.FORM);
		builder.addFormDataPart("参数1", map.get("参数1"));
		builder.addFormDataPart("参数2", map.get("参数2"));
		for (int i = 0; i < files.length; i++) {
			File file = files[i];
			System.out.println("file>>" + file.getPath());
			int num = file.getName().indexOf(".");
			RequestBody fileBody = RequestBody.create(MediaType.parse("image/jpeg"), file);// 将file转换成RequestBody文件
																							// 这里以MP4视频为例
			builder.addFormDataPart("photos[" + file.getName().substring(0, num) + "]", file.getName().toLowerCase(), fileBody);
		}
		MultipartBody requestBody = builder.build();
		Request request = new Request.Builder().url(BASE_PIC_URL + uri).post(requestBody).build();

		Call call = mOkHttpClient.newCall(request);
		call.enqueue(new Callback() {
			@Override
			public void onFailure(Call call, IOException e) {
				System.out.println("上传图片》》失败");
				callBack.fail("上传失败");
			}

			@Override
			public void onResponse(Call call, Response response) throws IOException {
				boolean successful = response.isSuccessful();
				String success = response.body().string();
				System.out.println("上传图片》》success》》" + success);
				if (successful) {
					callBack.success(success);
				} else {
					callBack.fail("上传失败");
				}
			}
		});
	}

/**
请求体 json传参
**/
	public void postJson(JSONObject jsonObject, String uri, HttpCallBack callBack) {
		MediaType JSON = MediaType.parse("application/json; charset=utf-8");
		RequestBody body = RequestBody.create(JSON, String.valueOf(jsonObject));

		Request.Builder builder1 = new Request.Builder();
		builder1.addHeader("Content-Type", "application/json; charset=utf-8");
		if (!StringUtil.isEmpty(session)) {
			builder1.addHeader("cookie", session);
		}
		Request request = builder1.url(PrefixURL + uri).post(body).build();

		Call call = mOkHttpClient.newCall(request);
		call.enqueue(new Callback() {
			@Override
			public void onFailure(Call call, IOException e) {
				System.out.println("请求失败");
				callBack.fail("请求失败");
			}

			@Override
			public void onResponse(Call call, okhttp3.Response response) throws IOException {
				Headers headers = response.headers();
				List<String> cookies = headers.values("Set-Cookie");
				if (cookies.size() > 0) {
					String s = cookies.get(0);
					session = s.substring(0, s.indexOf(";"));
					System.out.println("session>>>" + session);
				}

				boolean successful = response.isSuccessful();
				String success = response.body().string();
				// System.out.println("请求结果>>>"+success);
				if (successful) {
					callBack.success(success);
				} else {
					callBack.fail("请求失败");
				}
			}
		});
	}
}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值