مهمة مشتركة. على الرغم من أن httpentity لم يعد متاحًا في إصدارات API الأحدث ، لا تزال هناك طرق لتحقيق طلبات متعددة باستخدام Volley.
، يمكننا تمديد فئة طلب Volley مثل SO: استيراد com.android.volley.authfailureerror ؛
استيراد com.android.volley.networkresponse ؛
استيراد com.android.volley.parseerror ؛
استيراد com.android.volley.request ؛
استيراد com.android.volley.Response ؛
استيراد com.android.volley.volleyerror ؛
استيراد com.android.volley.toolbox.httpheaderparser ؛
استيراد java.util.map ؛
يمتد الفئة multirerequest طلب
بناء الجسم المتعدد
لبناء الجسم المتعدد ، يمكننا استخدام الخطوات التالية:
0] ؛ bytearrayoutputstream bos = جديد bytearrayoutputStream () ؛ DataOutputStream DOS = جديد DataOutputStream (BOS) ؛ يحاول { // بيانات النص BuildTextPart (DOS ، "Name" ، "John Doe") ؛ BuildTextPart (DOS ، "البريد الإلكتروني" ، "[email protected]") ؛ // بيانات الصورة bitmap imageBitMap = bitmapfactory.decoderesource (context.getResources () ، r.drawable.my_image) ؛ BuildImagePart (DOS ، "Image" ، ImageBitMap) ؛ } catch (ioException e) { E.PrintStackTrace () ؛ } multipartbody = bos.tobytearray () ؛
import com.android.volley.AuthFailureError; import com.android.volley.NetworkResponse; import com.android.volley.ParseError; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.HttpHeaderParser; import java.util.Map; class MultipartRequest extends Request:{ // Listener for request response private final Response.Listener mListener; // Listener for request error private final Response.ErrorListener mErrorListener; // Request headers private final Map mHeaders; // Multipart mime type (e.g., "multipart/form-data; boundary=XXX") private final String mMimeType; // Request body as multipart private final byte[] mMultipartBody; // Constructor public MultipartRequest(String url, Map headers, String mimeType, byte[] multipartBody, Response.Listener listener, Response.ErrorListener errorListener) { super(Method.POST, url, errorListener); this.mListener = listener; this.mErrorListener = errorListener; this.mHeaders = headers; this.mMimeType = mimeType; this.mMultipartBody = multipartBody; } // Getters and setters // Override getHeaders() if you need to add custom headers @Override public Map getHeaders() throws AuthFailureError { return (mHeaders != null) ? mHeaders : super.getHeaders(); } // Override getBodyContentType() to set the correct mime type for the multipart request @Override public String getBodyContentType() { return mMimeType; } // Override getBody() to return the multipart body @Override public byte[] getBody() throws AuthFailureError { return mMultipartBody; } // Override parseNetworkResponse() to parse the response as a NetworkResponse @Override protected Response parseNetworkResponse(NetworkResponse response) { try { return Response.success( response, HttpHeaderParser.parseCacheHeaders(response)); } catch (Exception e) { return Response.error(new ParseError(e)); } } // Delivering response and error @Override protected void deliverResponse(NetworkResponse response) { mListener.onResponse(response); } @Override public void deliverError(VolleyError error) { mErrorListener.onErrorResponse(error); } }
طلب multiredrequest = multiredrequest جديد (
"my_url" ،
فارغة ، // الرؤوس
"multipart/form-data" ،
multipartbody ،
new Response.Listener
إضافة بيانات نصية إلى الطلب
byte[] multipartBody = new byte[0]; ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(bos); try { // Text data buildTextPart(dos, "name", "John Doe"); buildTextPart(dos, "email", "[email protected]"); // Image data Bitmap imageBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.my_image); buildImagePart(dos, "image", imageBitmap); } catch (IOException e) { e.printStackTrace(); } multipartBody = bos.toByteArray();
استبدل اثنين من الهفوين والحدود والخطية بقيم مناسبة من الكود الخاص بك. تنفيذ فئة فئة VolleymultiParTrequest:
استيراد com.android.volley.authfailureerror ؛
استيراد com.android.volley.networkresponse ؛
استيراد com.android.volley.parseerror ؛
استيراد com.android.volley.request ؛
استيراد com.android.volley.Response ؛
استيراد com.android.volley.volleyerror ؛
استيراد com.android.volley.toolbox.httpheaderparser ؛
استيراد java.io.bytearrayoutputstream ؛
استيراد java.io.dataOutputStream ؛
استيراد java.io.ioException ؛
استيراد java.util.hashmap ؛
استيراد java.util.map ؛
يمتد فئة الفئة العامة من فئة VolleyMultiParTrequest طلب
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3