gpt4 book ai didi

安卓 : Sending form-data as body Google Volley

转载 作者:搜寻专家 更新时间:2023-11-01 09:46:42 26 4
gpt4 key购买 nike

在我的 Android 应用程序中,我使用 google 的 volley 进行网络操作。在某些情况下,我需要发出请求但将正文作为表单数据发送。我已经尝试了所有其他方法,但无法将请求作为表单数据。

这是一个 curl

curl -X POST -H "Content-Type: multipart/form-data" -F "mobile_number=<XXXX>" "<server_url>"

如何在 volley 中实现 -F 部分?服务器正在抛出错误的请求。

这就是我所做的:

final JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST, URLFactory.OTP_URL,
null, listener, errorListener){

@Override
public byte[] getBody() {
final JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("mobile_number", mobileNumber);
} catch (JSONException e) {
e.printStackTrace();
return null;
}
return jsonObject.toString().getBytes();
}


@Override
public Map<String, String> getHeaders() throws AuthFailureError {
final HashMap<String, String> headers = new HashMap<>();
headers.put("Content-Type", "multipart/form-data");
return headers;
}
};

请帮助我。

最佳答案

这可以通过自己创建 postBody 在 volley 中完成。请引用以下代码。

创建正文的代码:

private String createPostBody(Map<String, String> params) {
StringBuilder sbPost = new StringBuilder();
for (String key : params.keySet()) {
if (params.get(key) != null) {
sbPost.append("\r\n" + "--" + BOUNDARY + "\r\n");
sbPost.append("Content-Disposition: form-data; name=\"" + key + "\"" + "\r\n\r\n");
sbPost.append(params.get(key));
}
}

return sbPost.toString();
}

修改后的 getBody() 代码:

  @Override
public byte[] getBody() {
Map<String,String> params = new HashMap<>();
params.add("mobile_number", mobileNumber);
String postBody = createPostBody(params);

return postBody.getBytes();
}

您还需要修改 getHeaders 以告诉服务器您的边界是什么:

 @Override
public Map<String, String> getHeaders() throws AuthFailureError {
final HashMap<String, String> headers = new HashMap<>();
headers.put("Content-Type", "multipart/form-data;boundary=" + BOUNDARY;);
return headers;
}

关于安卓 : Sending form-data as body Google Volley,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37773813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com