mmultipartbody; // 생성자 public multipartrequest (문자열 URL, MAP 헤더, String Mimetype, Byte [] multipartbody, response.listener
multipart 바디 구축
multipart 본체를 구축하려면 다음 단계를 사용할 수 있습니다. 0]; BytearRayoutputStream BOS = New 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); } }
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); } }
:
multipartRequest 요청 = 새로운 multipartrequest ( "my_url", null, // 헤더 "Multipart/Form-Data", 멀티 파트, 새 응답 .listener
MultipartRequest request = new MultipartRequest( "my_url", null, // Headers "multipart/form-data", multipartBody, new Response.Listener() { @Override public void onResponse(NetworkResponse response) { // Handle response } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // Handle error } });
이미지 데이터 외에도 텍스트 데이터를 요청할 수도 있습니다.
private private void buildTextPart (dataOutputStream DataOutputStream, 문자열 이름, 문자열 값) IoException { DataOutputStream.writeBytes (2hyphens 경계선); dataOutputStream.writeBytes ( "내용-드라이브 : form-data; name = \" "name"\ ""lineend); DataOutputStream.writeBytes (Lineend); DataOutputStream.writeBytes (값); DataOutputStream.writeBytes (Lineend); }코드에서 적절한 값으로 TwoHyphens, 경계 및 라인 엔드를 교체하십시오. VolleymultipartRequest 클래스의 구현 :
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 Requestimport com.android.volley.authfailureError; com.android.volley.networkResponse import; com.android.volley.parseerror import; import com.android.volley.request; com.android.volley.response import; com.android.volley.volleyerror import; com.android.volley.toolbox.httpheaderparser import; import java.io.BytearRayoutputStream; import java.io.dataOutputStream; import java.io.ioexception; java.util.hashmap import; java.util.map import; 공개 클래스 VolleymultipartRequest 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); } }
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3