post和get请求以及传递文件 具体用法

一、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之后。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老杜_d

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值