【发布时间】:2016-08-03 13:33:37
【问题描述】:
我正在使用 volley 将图像和一些文本更新到服务器,但图像没有上传。我搜索了它,发现图像需要使用 multipart 发送,而 volley 不支持 multipart。有没有办法使用volley上传图片和文字?
// Volley request
StringRequest stringRequest = new StringRequest(Request.Method.POST, URLUtils.URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jObj = new JSONObject(response);
if((jObj.getString("Ack").equals("1"))){
Toast.makeText(getApplicationContext(), jObj.getString("msg"), Toast.LENGTH_SHORT).show();
System.out.println(jObj.getString("image"));
}
} catch (JSONException e) {
// JSON error
e.printStackTrace();
Toast.makeText(getApplicationContext(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), "VolleyError" + error.toString(), Toast.LENGTH_LONG).show();
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("auth", "abc167");
params.put("action", "editprofile");
params.put("first_name", fname_et.getText().toString());
params.put("last_name", lname_et.getText().toString());
params.put("address", address_str);
params.put("zipcode", zip_et.getText().toString());
params.put("phoneno", phone_et.getText().toString());
params.put("device_token_id", "1234567890");
params.put("device_type", "android");
params.put("lat", lat_str);
params.put("long", lng_str);
params.put("photo", imagepath);
params.put("userid", "121");
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
requestQueue.add(stringRequest);
【问题讨论】:
-
也许this 可以帮助您解决问题。
-
这里如何添加其他参数?