像这样,我想发送json body请求到GET API
我试过了,但没有用
public static void getQuestionsListApi2(final String requestId, final String timestamp,
final ImageProcessingCallback.downloadQuestionsCallbacks callback,
final Context context) {
try {
String url = NetUrls.downloadQuestions;
final JSONObject jsonBody = new JSONObject();
jsonBody.put("requestId", requestId);
jsonBody.put("timestamp", timestamp);
final String mRequestBody = jsonBody.toString();
Log.i("params", String.valueOf(jsonBody));
Log.i("URL", url);
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, **jsonBody**, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject jsonObject) {
Log.v("TAG", "Success " + jsonObject);
callback.downloadQuestionsCallbacksSuccess(jsonObject.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Log.v("TAG", "ERROR " + volleyError.toString());
}
});
request.setRetryPolicy(new DefaultRetryPolicy(
DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 0,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
RequestQueue queue = Volley.newRequestQueue(context);
queue.add(request);
} catch (JSONException e) {
e.printStackTrace();
}
}
request.setRetryPolicy(new DefaultRetryPolicy(
DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 0,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
RequestQueue queue = Volley.newRequestQueue(context);
queue.add(request);
这是我使用的代码发送JSONRequest与GET方法时,我得到400错误响应服务器和服务器不除了在网址形式的数据.我发送的jsonBody对象作为参数.任何解决方案.
3条答案
按热度按时间j5fpnvbx1#
如果你想在GET请求的主体中传递Json数据,你必须使用Query注解
这将作为Json对象
{"threaded": "val", "limit": 3}
传递。我试过了,这只是工作代码。
w80xi6nr2#
请尝试此代码。
将以下依赖项添加到应用级别Gradle文件中。
然后在所有单独类下面做后
第一个Retrofit对象创建类,如下所示。
}
然后制作如下的api接口。
进行pojo调用以获取服务器响应和用户输入..
}
用户输入类
}
当不需要用户交互时,使用GET方法。
你做pojo类然后使用下面的链接它生成pojo类粘贴你的json数据在.. http://www.jsonschema2pojo.org/
5cnsuln73#
您可以使用retrofit发送包含正文的请求。http://square.github.io/retrofit/
它是易于使用的库,例如:
另外,请看一下主体为HTTP GET with request body的get方法
更新
带请求体的GET方法是可选的here。但是,这个RFC7231文档说,
在GET请求上发送有效载荷主体可能导致一些现有实现拒绝该请求。
这意味着不建议这样做。请使用POST方法来使用请求正文。
从维基百科上查一下这个表。