不带 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中文网其他相关文章!