آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

آپلود عکس با Volley و مشخص کردن Content-Type (حل شد)

mosafer  9 سال پیش  9 سال پیش
+1 0

سلام

من برای آپلود عکس از آموزش این https://answers.uncox.com/android/question/13716/کتابخانه-Volley-آپلود-تصویر-و-ارسال-پارامتر-به-سرور-جدید-آموزش- استفاده کردم.

ولی مشکلاتی پیش امد که هر وقت آپلود میخوام انجام بدم این خطا در لاگ من بوجود میاد.

   BasicNetwork.performRequest: Unexpected response code 500 for http://ws.acsandemo.ir/api/cp/
02-27 09:43:08.799 1592-1592/com.mosafer3766 E/VOLLEY: com.android.volley.ServerError
 

بعد هم که بهم گفتن Content-Type برابر با application/json قرار بدم.

خب این کارو دقیقا به چه شکل باید انجام بدم و اینکه چطور به سمت body سرور پارامترهام رو بفرستم؟

ممنون میشم جواب بدین

0 0
نمیدونم چرا لینک اینجوری شد اینجا میذارم شاید درت شد. لینک (9 سال پیش)
0 0
ینی کسی نیست یه راهنمایی کنه. واقعا عجیبه! (9 سال پیش)
0 0
انتظار داشتم کسی بهم کمک کنه ولی متاسفنه انگار کسی حضور نداره. (9 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
mosafer  9 سال پیش
0 0

سلام 

دوستان من تونستم تا جایی کدم رو جلو ببرم.

ابتدا باید موارد ارسالی رو به جیسون تبدیل میکردم ینی به این شکل :

  String image = getStringImage(bitmap);


try {

JSONObject object = new JSONObject();

object.put("data", image);
object.put("uTypeId", 1);
object.put("id", 1);
object.put("uid", 746);


Log.e("JsonString ", object.toString());

String imageObject = object.toString();

} catch (Exception e){}
 

 

و با تغییری کدم رو به این شکل میفرستم...

 

 
   {

final ProgressDialog loading = ProgressDialog.show(this,"Uploading...","Please wait...",false,false);


StringRequest stringRequest = new StringRequest(Request.Method.POST, G.uplodeUrl, new Response.Listener<String>() {
@Override
public void onResponse(String s) {

loading.dismiss();

s.toString();
Toast.makeText(ActivityProfile.this, s.toString() + " " +"تغییر عکس پروفایل با موفقیت انجام شد", Toast.LENGTH_LONG).show();

}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {

loading.dismiss();

Log.e("VOLLEY", error.toString());
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {

HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
return headers;
}

@Override
public byte[] getBody() throws AuthFailureError {

try {
return imageObject == null ? null : imageObject.getBytes("utf-8"); // put your json
} catch (UnsupportedEncodingException uee) {
VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", imageObject, "utf-8");
return null;
}

}
};

RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
 

ولی وقتی اجرا میکنم هیچ پیغامی رو بر نمیگردونه و برنامم به این شکل میشه : 

این کدی که من زدم برای ارسال Data به قسمت body سرور درست هست یا نه؟

این کد :

  @Override
public Map<String, String> getHeaders() throws AuthFailureError {

HashMap<String, String> headers = new HashMap<String, String>();

headers.put("Content-Type", "application/json"); ** اینجا مشخص میکنم Content-Type

return headers;
}

@Override
public byte[] getBody() throws AuthFailureError {

try {

return imageObject == null ? null : imageObject.getBytes("utf-8"); // put your json

} catch (UnsupportedEncodingException uee) {

VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", imageObject, "utf-8");

return null;

}


}
 
پاسخ به سوال 
mosafer  9 سال پیش
+2 0

سلام

کسی به خودش زحمت نداد یه راهنمایی کنه ولی بلاخره درست شد خدارو شکر

Content-Type رو اشتباه میفرستادم.

بجای اینجای کد : 

 
@Override
public Map<String, String> getHeaders() throws AuthFailureError {

HashMap<String, String> headers = new HashMap<String, String>();

headers.put("Content-Type", "application/json"); ** اینجا مشخص میکنم Content-Type

return headers;
}

باید این رو مینوشتم :

 
@Override
public String getBodyContentType() {

return "application/json; charset=utf-8";
}

و کد تکمیلی من :

 
{

final ProgressDialog loading = ProgressDialog.show(this,"Uploading...","Please wait...",false,false);


StringRequest stringRequest = new StringRequest(Request.Method.POST, G.uplodeUrl, new Response.Listener<String>() {
@Override
public void onResponse(String s) {

loading.dismiss();

s.toString();
Toast.makeText(ActivityProfile.this, s.toString() + " : " + IdUser + " : " +"تغییر عکس پروفایل با موفقیت انجام شد", Toast.LENGTH_LONG).show();

}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {

loading.dismiss();

Log.e("VOLLEY", error.toString());
}
}) {

@Override
public String getBodyContentType() {

return "application/json; charset=utf-8";
}

@Override
public byte[] getBody() throws AuthFailureError {
//String your_string_json = ""; // put your json

try {
return imageObject == null ? null : imageObject.getBytes("utf-8");
} catch (UnsupportedEncodingException uee) {
VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", imageObject, "utf-8");
return null;
}


}
};

RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}

بازم ممنون


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .