我正在使用Android截击来发出请求。所以我使用这个代码。我不明白一件事。我在服务器中检查params是否始终为null。我认为GETPARAMS()不工作。我应该做些什么来解决这个问题。
RequestQueue queue = MyVolley.getRequestQueue();
JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.POST,SPHERE_URL,null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
System.out.println(response);
hideProgressDialog();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
hideProgressDialog();
}
}) {
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("id","1");
params.put("name", "myname");
return params;
};
};
queue.add(jsObjRequest);
对我来说很简单!我几周前收到的:
这是在getBody()方法中进行的,而不是在后请求的getParams()中进行的。
这里是我的:
@Override
/**
* Returns the raw POST or PUT body to be sent.
*
* @throws AuthFailureError in the event of auth failure
*/
public byte[] getBody() throws AuthFailureError {
// Map<String, String> params = getParams();
Map<String, String> params = new HashMap<String, String>();
params.put("id","1");
params.put("name", "myname");
if (params != null && params.size() > 0) {
return encodeParameters(params, getParamsEncoding());
}
return null;
}
(我假设您想发布您在getParams中编写的参数)
我在构造函数中给出了请求的参数,但是由于您正在动态创建请求,您可以在getBody()方法的重写中对它们进行硬编码。
这就是我的代码的样子:
Bundle param = new Bundle();
param.putString(HttpUtils.HTTP_CALL_TAG_KEY, tag);
param.putString(HttpUtils.HTTP_CALL_PATH_KEY, url);
param.putString(HttpUtils.HTTP_CALL_PARAM_KEY, params);
switch (type) {
case RequestType.POST:
param.putInt(HttpUtils.HTTP_CALL_TYPE_KEY, RequestType.POST);
SCMainActivity.mRequestQueue.add(new SCRequestPOST(Method.POST, url, this, tag, receiver, params));
如果你想要更多,最后一个字符串参数来自:
param = JsonUtils.XWWWUrlEncoder.encode(new JSONObject(paramasJObj)).toString();
参数JObj是这样的:{"id"="1","name"="myname"}
通常的JSON字符串。
您可以创建一个自定义的JSONObjectReuqest
并重写getParams
方法,也可以在构造函数中提供它们作为JSONObject
放在请求主体中。
像这样(我编辑了你的代码):
JSONObject obj = new JSONObject();
obj.put("id", "1");
obj.put("name", "myname");
RequestQueue queue = MyVolley.getRequestQueue();
JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.POST,SPHERE_URL,obj,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
System.out.println(response);
hideProgressDialog();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
hideProgressDialog();
}
});
queue.add(jsObjRequest);
尝试使用此帮助器类
import java.io.UnsupportedEncodingException;
import java.util.Map;
import org.json.JSONException;
import org.json.JSONObject;
import com.android.volley.NetworkResponse;
import com.android.volley.ParseError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.toolbox.HttpHeaderParser;
public class CustomRequest extends Request<JSONObject> {
private Listener<JSONObject> listener;
private Map<String, String> params;
public CustomRequest(String url, Map<String, String> params,
Listener<JSONObject> reponseListener, ErrorListener errorListener) {
super(Method.GET, url, errorListener);
this.listener = reponseListener;
this.params = params;
}
public CustomRequest(int method, String url, Map<String, String> params,
Listener<JSONObject> reponseListener, ErrorListener errorListener) {
super(method, url, errorListener);
this.listener = reponseListener;
this.params = params;
}
protected Map<String, String> getParams()
throws com.android.volley.AuthFailureError {
return params;
};
@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
try {
String jsonString = new String(response.data,
HttpHeaderParser.parseCharset(response.headers));
return Response.success(new JSONObject(jsonString),
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JSONException je) {
return Response.error(new ParseError(je));
}
}
@Override
protected void deliverResponse(JSONObject response) {
// TODO Auto-generated method stub
listener.onResponse(response);
}
}
在activity/fragment中,请使用
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
CustomRequest jsObjRequest = new CustomRequest(Method.POST, url, params, this.createRequestSuccessListener(), this.createRequestErrorListener());
requestQueue.add(jsObjRequest);
当按钮被按下时,我执行它
我在组件中有这个函数,它应该向express API发送POST请求: 这是向其发送请求的API: 我还要求在express,app.js文件中使用neccessary CORS依赖项 API路由运行良好,当我确实获得请求时,但是,当我执行post请求时,我总是得到这个错误: 未能加载http://localhost:3000/api/v1/addcomment:对飞行前请求的响应未通过访问控制检
以下是我的情况: < li >客户端向Netty服务器发送POST请求。 < li>Netty处理POST请求,如果服务器确定需要发送响应,它会将响应发送回客户端。否则,服务器必须向另一个endpoint发送POST请求,获取响应并将该响应发送回客户端。 到目前为止,我已经处理了传入的POST请求。要发送传出的POST请求,这是我在Handler中所做的。 这显然是错误的,因为我正在处理程序中启动
问题内容: 在views.py中: 我想通过jQuery将此数据(名称和年龄)发送到“ SomeView”中的此发布函数。这是与加载的模板相同的视图,只是请求类型不同。在get()上加载模板,并在post上调用post()函数。可能吗?我检查了其他问题并获得了此解决方案。它应该正在工作。我究竟做错了什么? 问题答案: 如果传入的POST请求未能通过Csrf检查,则Django返回403响应(禁止)
问题内容: 我想使用wget将图片(使用身份验证令牌“ AUTH_1624582364932749DFHDD”)上传到远程服务器到“ test”文件夹。 该命令不起作用(授权失败),我想确保它与语法无关: 有什么建议么? 问题答案: Wget当前仅支持x-www-form-urlencoded数据。不是用于将文件作为表单附件传输,而是需要格式为的数据。 并以相同的方式工作:唯一的不同是,您可以在命
有人能帮助我如何使用以下参数发送POST请求吗: 我试着在《邮递员的身体》中发送一个带有以下参数的: 然而,在发送上述请求时,我得到的位置字符串为null。