【发布时间】:2017-11-14 17:09:01
【问题描述】:
我正在使用 Volley 发出服务器请求,但我知道 volley 没有在 POST 请求中从 getParams() 方法传递参数,所以现在我通过将所有参数/值与下面的 url 连接来传递这些数据。
String url = "http://myweb/api/work?"+param1+"="+value;
现在的问题是它仅适用于文本数据,我可以成功发出请求,并且所有参数都传递到服务器,但现在我也必须使用相同的 api 上传一些图像文件。
如何使用 Volley POST 方法传递文件和字符串数据?
以下是我尝试但没有成功的解决方案。 https://gist.github.com/anggadarkprince/a7c536da091f4b26bb4abf2f92926594#file-volleymultipartrequest-java
https://www.simplifiedcoding.net/android-volley-tutorial-to-upload-image-to-server/
编辑 以下是我当前的请求代码:
StringRequest request = new StringRequest(Request.Method.POST, uri + param, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
dismissProgressDialog();
printResponse(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
dismissProgressDialog();
error.printStackTrace();
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<>();
headers.put("key", key);
headers.put("tkey", tkey);
headers.put("Content-Type", "application/multipart");
return headers;
}
};
【问题讨论】:
-
你可以将图片作为base64作为字符串传递
-
你的 API 是多部分的吗?如果是,那么您可以将文件作为 API 请求的多部分正文发送,如果不是,您怎么能考虑将文件作为参数或字符串正文发送。
-
@Avi 是的,它是多部分的。
-
如果您的 api 支持多部分,那么您可以从以下位置获得帮助:- gist.github.com/anggadarkprince/…
-
@JaydeepPatel 谢谢,你有任何示例代码或参考吗?
标签: android http-post android-volley