一、post请求:参数不能放在URL路径上
OkHttpClient okHttpClient = MySingleton.getOkHttpClient();
FormBody body = new FormBody.Builder()
.add("lifeCycleID", Constants.lifeCycle.getId())
.add("sysAtlasProgStorageID", id)
.build();
Request request = new Request.Builder()
.url(Constants.atlas_xd)
.post(body)
.addHeader("Authorization", Constants.Authorization)
.build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
Message message1 = new Message();
message1.obj = "网络异常";
message1.what = 2;
mHandler.sendMessage(message1);
}
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
if (response.isSuccessful()) {
String returnBody = response.body().string();
JSONObject returnMessage = JSONObject.parseObject(returnBody);
if (returnMessage.getBoolean("success") && returnMessage.getString("message").equals("新增图集方案选定表成功")) {
Message message1 = new Message();
message1.obj = "图集或方案选定成功";
message1.what = 2;
mHandler.sendMessage(message1);
} else {
Message message1 = new Message();
message1.obj = returnMessage.getString("message");
message1.what = 2;
mHandler.sendMessage(message1);
}
}
}
});
但是在使用post请求传递 file 时,也可以这样写:
new Thread(new Runnable() {
@Override
public void run() {
String result = null;
try {
String requestUrl = Constants.IP + "/atlas/insertAtlasProgStorage?explain=" + ms + "&name=" + name + "&pac=" + Constants.fruit.getPac() +
"&permission=" + finalPermission + "&uploadType=" + finalUploadType + "&type=" + finalType;
// 链接超时,请求超时设置
BasicHttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 10 * 1000);
HttpConnectionParams.setSoTimeout(httpParams, 10 * 1000);
// 请求参数设置
HttpClient client = new DefaultHttpClient(httpParams);
HttpPost post = new HttpPost(
requestUrl);
post.addHeader("Authorization", Constants.Authorization); //添加请求头
MultipartEntity entity = new MultipartEntity();
for (String p : path_list) {
entity.addPart("docFile", new FileBody(new File(p), "*/*"));
}
entity.addPart("picFile", new FileBody(new File(picPath), "image/*"));
post.setEntity(entity);
HttpResponse resp = client.execute(post);
// 获取回调值
// System.out.println("Response:"
// + EntityUtils.toString(resp.getEntity())); //返回信息
// System.out.println("StatusCode:"
// + resp.getStatusLine().getStatusCode()); //状态值
String toString = EntityUtils.toString(resp.getEntity());
JSONObject jsonObject = JSONObject.parseObject(toString);
String message = jsonObject.getString("message");
Message msg = new Message();
msg.what = 2;
msg.obj = message;
mHandler.sendMessage(msg);
//上传完成后关闭提示框
progressDialog.dismiss();
} catch (Exception e) {
Log.i(Constants.TAG, "upload error");
e.printStackTrace();
progressDialog.dismiss();
}
Log.i(Constants.TAG, "upload end");
}
}).start();
二、get请求时:
if (nethttpbuild != null) {
nethttpbuild = null;
}
nethttpbuild = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(1, TimeUnit.HOURS)
.writeTimeout(1, TimeUnit.HOURS)
.build();
netrequest = new Request.Builder()
.addHeader("Authorization", Constants.Authorization)
.url(Constants.atlas_list + "?" + tj)
.get()
.build();
netcall = nethttpbuild.newCall(netrequest);
netcall.enqueue(new Callback() {
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
ToastUtil.showToast(AtlasActivity.this, "网络请求失败");
call.cancel();
}
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
try {
if (response.isSuccessful()) {
String returnBody = response.body().string();
JSONObject returnMessage = JSONObject.parseObject(returnBody);
if (returnMessage.getBoolean("success") && returnMessage.getString("message").equals("查询图集方案存储表成功")) {
String data = returnMessage.getString("data");
JSONArray jsonArray = JSONArray.parseArray(data);
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
}
progressDialog.dismiss();
} else {
ToastUtil.showToast(AtlasActivity.this, returnMessage.getString("message"));
progressDialog.dismiss();
}
//添加到适配器
Message message1 = new Message();
message1.what = 3;
mHandler.sendMessage(message1);
}
} catch (Exception e) {
e.printStackTrace();
ToastUtil.showToast(AtlasActivity.this, "图集下载失败!");
}
}
});
get请求需要传递的参数,可直接拼接在URL之后。