首页 >Java >java教程 >弃用 HttpEntity 后如何使用 Volley 发送多部分请求?

弃用 HttpEntity 后如何使用 Volley 发送多部分请求?

DDD
DDD原创
2024-12-01 13:50:12916浏览

How to Send Multipart Requests with Volley After HttpEntity Deprecation?

不带 HttpEntity 的 Volley 多部分请求

简介

在 API22 中弃用并删除了 HttpEntity在 API23 中,Android 开发人员在使用以下方式发送多部分请求时可能会面临挑战凌空抽射。本文提供了在不使用 HttpEntity 的情况下使用 Volley 进行 POST 多部分请求的工作代码示例。

代码实现

MultipartActivity.java:

package com.example.multipartvolley;

// ... As before

@Override
protected void onCreate(Bundle savedInstanceState) {
    // ... As before

    byte[] fileData1 = getFileDataFromDrawable(context, R.drawable.ic_action_android);
    byte[] fileData2 = getFileDataFromDrawable(context, R.drawable.ic_action_book);

    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    DataOutputStream dos = new DataOutputStream(bos);

    try {
        // ... As before
    } catch (IOException e) {
        // ... As before
    }

    String url = "http://192.168.1.100/api/postfile";
    MultipartRequest multipartRequest = new MultipartRequest(url, null, mimeType, multipartBody, new Response.Listener<NetworkResponse>() {
        @Override
        public void onResponse(NetworkResponse response) {
            // ... As before
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            // ... As before
        }
    });

    // ... As before
}

// ... Remaining methods

MultipartRequest.java:

package com.example.multipartvolley;

// ... As before

@Override
public String getBodyContentType() {
    return mMimeType;
}

@Override
public byte[] getBody() throws AuthFailureError {
    return mMultipartBody;
}

// ... Remaining methods

已更新文字数据

要在请求中包含文本数据,您可以重写 VolleyMultipartRequest 中的 getParams() 方法:

@Override
protected Map<String, String> getParams() {
    Map<String, String> params = new HashMap<>();

    // Add your text parameters
    params.put("api_token", "gh659gjhvdyudo973823tt9gvjf7i6ric75r76");
    params.put("name", "Angga");
    params.put("location", "Indonesia");

    return params;
}

结论

即使在 HttpEntity 被弃用之后,所提供的代码也提供了使用 Volley 发送多部分请求的实用解决方案。通过使用本文中描述的方法,开发人员可以轻松地将多个文件和文本数据 POST 到服务器,而不需要复杂的 HttpEntity 实现。

以上是弃用 HttpEntity 后如何使用 Volley 发送多部分请求?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn