我目前正试图通过Google Volley发送一个简单的POST请求到我的服务器。因此,我写了以下几行代码:
Map<String, String> params = new HashMap<String, String>();
params.put("regId", "skdjasjdaljdlksajskl");
JSONObject object = new JSONObject(params);
JsonObjectRequest request = new JsonObjectRequest(Method.POST,
"address_of_my_server/method", object,
successListener, errorListener);
queue.add(request);
但是我得到一个返回的错误500,它表示缺少一个参数(regId)。我尝试了相同的GET请求,但得到了相同的结果。
只有当我使用带有格式化URL的StringRequest时,如address_of_my_server/方法?"服务器以200回复。
当我使用StringRequest时,我得到了完全相同的结果,如:
StringRequest request = new StringRequest(Method.POST,
"myurl", successListener,
errorListener){
@Override
protected Map<String, String> getParams()
throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("regId", "skdjasjdaljdlksajskl");
return params;
}
};
为什么截击忽略了我的参数?
Rajesh Batth提到的问题就是一个很好的例子
Java代码:
JSONObject obj = new JSONObject();
try {
obj.put("id", "1");
obj.put("name", "myname");
} catch (JSONException e) {
e.printStackTrace();
}
JsonObjectRequest jsObjRequest = new JsonObjectRequest(
Request.Method.POST, url, obj, listener, errorlistener);
RequestQueue queue = Volley.newRequestQueue(context);
queue.add(jsObjRequest);
PHP代码:
$body = file_get_contents('php://input');
$postvars = json_decode($body, true);
$id = $postvars["id"];
$name = $postvars["name"];
注:
如果不发送其他GET-VAR,则PHP变量$\u POST
和$\u REQUEST
和$\u GET
为空。
使用此帮助器类:
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);
}
}
我上周也有同样的问题,但现在已经解决了。您的服务器接受内容类型作为表单数据,当发送volley的JsonObjectRequest时,请求的内容类型将是application/json,因此整个参数将作为一个json主体发送,而不是像Stringrequest中那样作为键值对发送。更改服务器代码以从http请求体获取请求参数,而不是从键获取请求参数(如php中的$_request['name'])。
我看了关于截击的Google IO 2013课程,我正在考虑改用截击。Volley是否支持向请求添加POST/GET参数?如果是,我怎么做?
问题内容: 有人能想到一种忽略Java双击附带的单击的好方法吗? 我希望每种行为都有不同的行为,例如: 单击可在点击点上绘制十字准线 双击选择屏幕上的对象,但应该 不是 搽点击点十字线 …有人能想到一种方法吗?某种计时器设置可能是?一个想法赞赏:-) <免责声明> …而且是的,我知道我正在犯一个最令人发指的可用性/ UI伪装。 问题答案: 实际上,您需要在MouseAdapter的重写mouseC
我正在尝试制作一款可以通过语音识别停止的闹钟Android应用程序。为此,我正在使用Google语音识别API(这段代码可以连续进行语音识别)。 它工作得很好,直到我同时演奏音乐。在这种情况下,语音识别的效率会大大降低。 这个问题是合乎逻辑的,因为音乐会增加一些噪音,使识别变得更加困难。但是由于播放的音乐是已知的,我想知道是否有可能告诉谷歌尝试忽略这些额外的噪音。我知道信号处理中存在一些滤波器来做
是否可以在Python中使用chromedriver和selenium对元素进行截图。我知道chrome开发工具允许我们对特定元素进行截图。即使是JavaScript方法,我也可以使用命令获取数据URI。
我使用截击来实现简单的REST请求,并在其中传递一些post参数。但它总是给出响应。 我已尝试按照自定义要求进行操作。 我确实尝试重写并在其中传递参数。但它并没有传递参数并抛出错误400。我在这里和这里尝试了许多建议,但都不管用。截击中有虫子吗? 请导游。
几个月前,为存储桶激活了云CDN。我们的存储数据通过后端定期更改。因此,为了使缓存版本无效,我们在提供给客户机的url中添加了一个带有的查询参数。 当时这很管用。 在过去几个月(可能是几周)的某个时候,Google似乎改变了这种情况,现在忽略了从存储桶缓存的查询字符串。 null 对于后端桶,缓存键由URI组成,不包含query>字符串。因此https://example.com/images/c