Java 如何在drupal桌上截击
我正试图从我的Android应用程序中截取x-www-form-url编码到drupal表中。我试图在参数中发送一个“type”和“value”,结果得到一个500错误。基本StringRequest返回404 这是我的最新代码。我只找到一两个与截击有关的条目。任何帮助都将不胜感激。祝你今天愉快Java 如何在drupal桌上截击,java,android,drupal,drupal-7,android-volley,Java,Android,Drupal,Drupal 7,Android Volley,我正试图从我的Android应用程序中截取x-www-form-url编码到drupal表中。我试图在参数中发送一个“type”和“value”,结果得到一个500错误。基本StringRequest返回404 这是我的最新代码。我只找到一两个与截击有关的条目。任何帮助都将不胜感激。祝你今天愉快 private void postTestAnswerResult(String id, String answerResult) { StringRequest req = null;
private void postTestAnswerResult(String id, String answerResult) {
StringRequest req = null;
requestQueue = Volley.newRequestQueue(this);
final String baseURL = "http://blah.blah.com/api/answer/";
String URL = baseURL + id;
// Post params to be sent to the server
HashMap<String, String> params = new HashMap<String, String>();
params.put("Content-Type","application/x-www-form-urlencoded");
params.put("type", answerResult);
req = new StringRequest(Request.Method.PUT, URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
VolleyLog.v("Response:%n %s", response.toString());
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
try {
String responseBody = new String(
volleyError.networkResponse.data, "utf-8");
JSONObject jsonObject = new JSONObject(responseBody);
} catch (JSONException e) {
// Handle a malformed json response
} catch (UnsupportedEncodingException error) {
}
}
}
);
requestQueue.add(req);
}
private void postTestAnswerResult(字符串id,字符串answerResult){
StringRequest-req=null;
requestQueue=Volley.newRequestQueue(this);
最终字符串baseURL=”http://blah.blah.com/api/answer/";
字符串URL=baseURL+id;
//将要发送到服务器的Post参数
HashMap params=新的HashMap();
参数put(“内容类型”、“应用程序/x-www-form-urlencoded”);
参数put(“类型”,应答结果);
req=新的StringRequest(Request.Method.PUT,URL,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
v(“响应:%n%s”,Response.toString());
}
},
新的Response.ErrorListener(){
@凌驾
公共错误响应(截击错误截击错误){
试一试{
String responseBody=新字符串(
截击错误.networkResponse.data,“utf-8”);
JSONObject JSONObject=新的JSONObject(ResponseBy);
}捕获(JSONException e){
//处理格式错误的json响应
}捕获(不支持DencodingException错误){
}
}
}
);
添加(req);
}
如果您仍然对此有问题,正如@Meier在上面的评论中指出的,您没有使用params变量,或者更确切地说,您没有正确使用它。数据不会被发送到服务器,服务器可能期望数据会导致500错误
您需要重写StringRequest调用的getParams方法才能发送数据。因此,以下几点将更接近于完成工作:
private void postTestAnswerResult(String id, String answerResult) {
StringRequest req = null;
requestQueue = Volley.newRequestQueue(this);
final String baseURL = "http://blah.blah.com/api/answer/";
String URL = baseURL + id;
req = new StringRequest(Request.Method.PUT, URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
VolleyLog.v("Response:%n %s", response.toString());
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
try {
String responseBody = new String(
volleyError.networkResponse.data, "utf-8");
JSONObject jsonObject = new JSONObject(responseBody);
} catch (JSONException e) {
// Handle a malformed json response
} catch (UnsupportedEncodingException error) {
}
}
}
) {
@Override
protected Map<String, String> getParams()
{
HashMap<String, String> params = new HashMap<String, String>();
// params.put("Content-Type","application/x-www-form-urlencoded"); This shouldn't be here. This is a HTTP header. If you want to specify header you should also override getHeaders.
params.put("type", answerResult);
return params;
}
};
requestQueue.add(req);
private void postTestAnswerResult(字符串id,字符串answerResult){
StringRequest-req=null;
requestQueue=Volley.newRequestQueue(this);
最终字符串baseURL=”http://blah.blah.com/api/answer/";
字符串URL=baseURL+id;
req=新的StringRequest(Request.Method.PUT,URL,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
v(“响应:%n%s”,Response.toString());
}
},
新的Response.ErrorListener(){
@凌驾
公共错误响应(截击错误截击错误){
试一试{
String responseBody=新字符串(
截击错误.networkResponse.data,“utf-8”);
JSONObject JSONObject=新的JSONObject(ResponseBy);
}捕获(JSONException e){
//处理格式错误的json响应
}捕获(不支持DencodingException错误){
}
}
}
) {
@凌驾
受保护的映射getParams()
{
HashMap params=新的HashMap();
//params.put(“Content-Type”,“application/x-www-form-urlencoded”);不应在此处。这是一个HTTP头。如果要指定头,还应覆盖getHeaders。
参数put(“类型”,应答结果);
返回参数;
}
};
添加(req);
浏览器不会忽略500个错误。它们通常在浏览器窗口中显示为难看的消息。500个错误表示服务器发现了错误。您可以在服务器日志文件中找到有关错误的详细信息。谢谢。我听说500个错误会被多次发回,而浏览器基本上会忽略它们。以上代码看起来正确吗?谢谢。500表示服务器错误。如果服务器告诉您有错误,请至少查看error.log。brwoser可能会忽略它,因为它无法执行任何操作。但您可以执行某些操作,请查看error.log!您在上述代码中没有使用params变量。