如何解决发送Volley Multipart帖子图片和Params请求时收到错误500
我正在使用发送MultipartRequest
Volley
Post
请求,我收到服务器错误
BasicNetwork.performRequest:意外的响应代码500
服务器正在 Postman
上接收请求,没有问题。
此外,我使用http://httpbin.org/post
来测试图像和参数是否已附加,对我而言一切正常。谁能帮我这个。尝试搜索几个小时仍无法解决此问题。
Httpbin响应
{
"args":{
},"data":"","files":{
"image":"data:application/octet-stream;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAcCBDgDASIAAhEBAxEB/8QAHwABAAICAwEBAQEAAAAAAAAAAAgJBwoeBQYDAgEL/8QAgRAAAAYCAQEEAgUQEREEBAAfAAECAwQFBgcIEQkSEyEUMRUiQVeWFhcYGTI4UWFxdpKxtcHV1iM2N1NWdXeBkaGms7S20dPUCiQzNDU5Qlhyc3STlZey4fBSVJTxGiVigrfCQ2N4hcXSJlWGotcnREZkZ4SYw8TGKTpFsgiDh/L/xAAeAQEAAAcBAQEAAAAAAAAAAAAAAQMEBQYHCAIJCv/EAIURAAEDAgICBRENDwoPDAgGAwABAgMEBQYREiEHEzFRYRQWFxhBVFVWcZOUlbHR09TwCAkVIjI1U3SBkcHS1RkzN1JXcnWSlqGlsrO01iM2QmJzdqO1wvEnOENHZWZnaISGpKfh5OckKDRERWNkd4KiprYlOUiDh7fj5SZGhcTi8njD5v/aAAwDAQACEQMRAD8A3OAH4ccbaQpx1xDTaS6qW4pKEJL1dVKUZJIuvl5mOMmxr1qShE+GtajJKUplMKUpR+RElJLMzMz8iIi6mAOYAAAAD5OvssJ777zTKOpF33XENp6n6i7yzSXU/cLqPi3PgurS21NIoUKPoltuSytajIjMySlKzUZ9CM/Ij8iMwBywAAAAAAAAGANtcpNCaNsItTtDZNBi9vMbQ8xUvuuyrLwF9O5IdhQmpD7DKiPqlx5CEqT5pMy8wBn8B4fXmysD2vjUbL9dZRUZbjkta2mrOnlJkMpfa6eLHfSXR2PJb7yTWw+ht1JKSZp6KIz9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwTsjk3oPUV9ExjY+1MRxPIZiGXWqizskJnIZkd3wHpTDSXVQ2niWlba5XhEttSXE9WzJR5fr7+ktqWPkdbbV06hlwisY1xFlsPVr0BTfilLbmNrUwqP4ZGs3SX3CSRmZl0MAduAj7ivKzjpm+Znr3Fdv4Vd5ib7kVmkh2zSpEuU0ruuRoLiiTHmvkr2pNRXnVrPybJR+QkEAAAAAAAAAACuveHaaaF0Fsi91fmWObOm5Bj5sFMk0FJjsurc9Ib8RBxn5uV10lZEn5rxIjRkfqIy8wBYoAx5qfZdFuLXWKbNxmNZw6HMK47OsjXLMaPaNRylSIndmMRJc6M26bkZaiS1LeT3DSZqJrmlPnducg9N6JiwZW1c9o8Q9k+97HRZ7yl2E5KDNK3I0CMh6W60hRGlTqWvDJRGnvd4jIAZlAYt1XurVu7aV6/1bmtLmNbFdSxNcq5HefgvLI1IanQ3Utyoi1klRoJ9lBL7qu6Z90+mUgAAAAAAET+UHMTWXE2NjEvY9RmfWxC/jBUDU217rqbsGDdKxoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//Z"
},"form":{
"email":"emirdeed@gmail.com","emailText":"Hallo,\nes ist jetzt ganz einfach,selbst aktiv etwas gegen das Insekten- und Bienensterben und f?r mehr Biodiversit?t zu tun. Privaten G?rten und Balkonen kommt dabei eine sehr wichtige Aufgabe zu,z. B. durch die richtige Auswahl der Pflanzen. Im Anhang siehst du den ?koscan von meinem Garten,der auf www.example.de erstellt wurde. Hier kannst Du ganz einfach in der Pflanzensuche insektenfreundliche Pflanzen finden und Pflanzen per Foto bestimmen. Die Anwendung ist ?brigens kostenlos.\nVielleicht hast du ja Lust,deinen eigenen Garten auch mal zu checken.\n\nViele Gr??e,\n","fromMail":"example@example.com","fromName":"Amir","toName":"receiver name"
},"headers":{
"Accept-Encoding":"gzip","Authorization":"Bearer BAN4vrbQLvp6J5xLVx_VEY1_Pa1lNqhtLUqwRWGrvQbUh2FEwY7YQOSSAm2Ptj6nDgSltyP2qhd_7f5U6A0hl1gbm6m-1gt6qWQuM1PTkr_BqfM9KgsMTv-pECNHvcYqkytTRbC8WzgA32WDN9u3_VE_2Vqv7SEXJtd946bMFKslp_iLQfVxlalGXEm_XdonJgBGEzH83tdeJEqQ5GnjzE0HEmHoGRek911j6TwL0fUWDfXWSSW057EeKEB5krvqFdZJSSavdWeP4UM0E7PnubDieR7dSkBpk5JX8MRJ7dx0IgnWjFavTwakQdtwdqJDVzm12IHhsmOZk45YBAoc0A","Content-Length":"343844","Content-Type":"multipart/form-data; boundary=zoPsBEe7D03JvmrpnkldtWEY7g7cNl6QiSVpjqIE; charset=US-ASCII","Host":"httpbin.org","User-Agent":"Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)","X-Amzn-Trace-Id":"Root=1-5f9722f1-20f1e81d2b9a54616d2090d7"
},"json":null,"origin":"194.95.1.95","url":"http://httpbin.org/post"
}
发送排球方法
private void emailFile(Bitmap bitmap) {
File savedPdfFile = new File(getActivity().getFilesDir(),file_name_path);
String scanEmailUrl = "https://examplebackend.sslbeta.de/api/AccountAPI/sendScanMail";
//String scanEmailUrl = "http://httpbin.org/post";
File file = bitmapToFile(bitmap,"example_ecoscan");
// Add binary body
if (file != null) {
HashMap<String,String> params = new HashMap<String,String>();
params.put("email","emirdeed@gmail.com");
params.put("emailText",emailMsgEdtText.getText().toString());
params.put("fromMail","example@example.com");
params.put("fromName","Amir");
params.put("toName","receiver name");
MultipartRequest myRequest = new MultipartRequest(getActivity(),file,params,scanEmailUrl,new Response.Listener<String>(){
@Override
public void onResponse(String response) {
Log.d("response",response);
Toast.makeText(getContext(),"email sent",Toast.LENGTH_SHORT).show();
}
},new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError e) {
Log.d("ReadRdaJSONFeedTask",e.getLocalizedMessage() == null ? "" : e.getLocalizedMessage());
Toast.makeText(getContext(),e.getLocalizedMessage() == null ? "" : e.getLocalizedMessage(),Toast.LENGTH_SHORT).show();
}
});
myRequest.setRetryPolicy(new DefaultRetryPolicy(10000,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
RequestQueueSingleton.getInstance(getContext()).addToRequestQueue(myRequest);
}
}
MultipartRequest类
public class MultipartRequest extends Request<String> {
private multipartentity entity = new multipartentity();
private static final String FILE_PART_NAME = "image";
private final Response.Listener<String> mListener;
private final File file;
private final HashMap<String,String> params;
private Context context;
public MultipartRequest(Context context,File file,HashMap<String,String> params,String url,Response.Listener<String> listener,Response.ErrorListener errorListener) {
super(Method.POST,url,errorListener);
mListener = listener;
this.file = file;
this.params = params;
this.context = context;
buildmultipartentity();
}
private void buildmultipartentity() {
entity.addPart(FILE_PART_NAME,new FileBody(file));
try {
for (String key : params.keySet()) {
entity.addPart(key,new StringBody(params.get(key)));
}
} catch (UnsupportedEncodingException e) {
VolleyLog.e("UnsupportedEncodingException");
}
}
@Override
public String getBodyContentType() {
return entity.getContentType().getValue();
}
@Override
public byte[] getBody() throws AuthFailureError {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
entity.writeto(bos);
} catch (IOException e) {
VolleyLog.e("IOException writing to ByteArrayOutputStream");
}
return bos.toByteArray();
}
/**
* copied from Android StringRequest class
*/
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
String parsed;
try {
parsed = new String(response.data,HttpHeaderParser.parseCharset(response.headers));
} catch (UnsupportedEncodingException e) {
parsed = new String(response.data);
}
return Response.success(parsed,HttpHeaderParser.parseCacheHeaders(response));
}
@Override
public Map<String,String> getHeaders() throws AuthFailureError {
ApplicationUser user = PreferencesUtility.getUser(context);
Map<String,String> headers = new HashMap<>();
headers.put("Authorization","Bearer " + user.getToken());
return headers;
}
@Override
protected void deliverResponse(String response) {
mListener.onResponse(response);
}
}
Postman
工作示例,httpbin.org/post
个回复
{
"args": {},"data": "","files": {
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArsAAAJWCAYAAABYuU/eAACAAElEQVR42uy9CXRc9ZXue1TzrHmWJVnzPM/zPA+lWbJkTZblkcHGNsYYG4PBGEMcx3EIcAmhadrX1+1LOzQhPJrQhE7oNJ2mOwmXy6K5PB6LTnNzeTwvlheL5aW133//zzlVp0pVkmzLtiTvb629qlSSSqoqVelX+3z724JAIpFIJBKJRCKRSCQSaVVIRXcBiUQikUgkemmtAa5GKpWiSCQSiUQikUikNQG7Og+wS8BLIpFIJBKJRFpz4EuwSyKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRrlOY5WuQTkkkEolEIpFIpDUllQS7FgJeEolEIpFIJNJahl6CXRKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgk0s0Q+lb9WIWximAVxSqWVRyrBJ1Ol2az2UqiwoLb4mIiNsTGRm6Njo64MyIscGeQv++s2WwY1+nUw2qdepB97Qajkdcwq16NRtPErqOMVQ6rFOl6w6Sfp6O7nkQikUgkEol0zUpLE3RBQaYIBqFZDDzr1Gp1LwPTMZNJP2s1G3f7Wi2P2CyWp6xW44s2m/mcr6/tnL+/7VyAn/WCv6/t1eBAv7ciw4PfXx8d8Xn8+shvYqMj5iLCgiE0JABCgvyBfR4C/G1X/Hwtl31tlktY7Pwlf1/rN/5+Njz/Z5vF/JnRaPhQp9W85+Pj84ZKpTrHfrWnWB1jtZ/VLKteVjWsshcwpULYjmYVIsGxRQJkFT2yJBKJRCKRSLeHVFarNchisWRYDIYao9HY72+z7IwIDz0WHBxw1mYzvWOxGD+0mE1fmkzGb80m45zFbAR2GsstWFnZrGZeDFSBASr4sWIQDL6+Fn6ZlX3ObDKA0agHvV4Hep2WlY6fN7AyGvSsDGAyimU0Os+b8WexslnxZxnZ9Rjx8ivs+77V6TRfazTqLxn8fszqfXZb3mb1CqsX2MdnWCEM72Y1ycrOqo5VgSB2iBGCgwTqdpnIJBKJRCKtCWEubIRWqy0ymw1jVpPhgM1iOmO1mi4yGH3Pz2b5jIHqV4H+vt8GBfozSDWLYGmSABSB1AGjenaqLINLIcRqtRrQapylUWOpQc1KPFXxU14aL6X4HL8+ViIos9JrRXDm8MxrTqfVXGH1LatL7Hu+Yj/3SwbEnxsM+g/YbX7bbDScZd93UqBvU/cR3Vc0/+4pAFoqt0pFUqUqPKqDr/qsijqbokqVKlWqWgT0RgjwbSfANEq8IdKdTAB8n/ge9QapStWd8bxXz2VVqlSpUtXi3xDNrUqVKlWq7pD6/zIOZQjiDhPqAAAAAElFTkSuQmCC"
},"form": {
"email": "example@gmail.com","emailText": "some text","fromMail": "example@example.com","fromName": "Amir","toName": "receiver name"
},"headers": {
"Accept": "*/*","Accept-Encoding": "gzip,deflate,br","Authorization": "Bearer UkNQV8NSJV7DIZzVhMHXJvH2SCdTtdpl0SVCBP5tj3cSgNnAgdhBYdA8HFb0NUHZYzWkYH0Tf3bdTLU5isyJTcWCPFIQQhDHG_SMkO_WIszDl0T0mYj-kkSyErz4nZtSKZy8I_fnbFyjAuDEEW1khdt1ct1f-Dp5t-vyfHj9hlgyJlyF3d5iroYsLRRbu_gTWD39sWiqr1T31aZTst5kMIz6M9KOtvGAVZIep7soY8LnIN59aMC0ShpmmooIZh21hYhaGGD2NRivZnVHd--dlWUYeQSMayqtTUEF4NqpjcHmLJvK61ZwobM-7ORwNc4R5iBS-6PNVKbrmsE13BGQNw","Content-Length": "178556","Content-Type": "multipart/form-data; boundary=--------------------------295330887852083842487601","Host": "httpbin.org","Postman-Token": "7a09709e-996b-47e6-9366-329f4c55bfc9","User-Agent": "PostmanRuntime/7.26.5","X-Amzn-Trace-Id": "Root=1-5f97d311-48bdfe9b61cff3977e2788a8"
},"json": null,"origin": "194.95.1.95","url": "http://httpbin.org/post"
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。