我的logcat中有这个错误 我用Volley发送请求。
E/Volley﹕ [2040] BasicNetwork.performRequest: Unexpected response code 412 for http:/myserver/index.php
没有,没有其他错误。
没有行错误,没有。
我不知道该怎么做。
答案 0 :(得分:1)
创建自定义请求并覆盖getParam()方法
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;
}
@Override
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);
}
}
并将这些行放在活动中
CustomRequest jsObjRequest = new CustomRequest(Method.POST, url,params, this.createRequestSuccessListener(), this.createRequestErrorListener());
requestQueue.add(jsObjRequest);
如果不起作用,则在make request clear cache之前 的 requestQueue.getCache()清除(); 强>
答案 1 :(得分:0)
FML,对不起这个问题。
问题是我的名字页面。它不是index.php而是我服务器上的indexx.php
一个错误的错误......
Mayve这个答案会和其他像我一样的人^^
答案 2 :(得分:0)
以防我的答案适合某人! 所以,我正在使用POST请求,但没有随请求发送任何参数。当我用GET替换POST时,一切正常。请注意,我不需要发送任何参数和网址。
答案 3 :(得分:0)
当您的 Api 在服务器中找不到您的 url 路径时,您会收到 404,403 错误或 BasicNetwork.performRequest() 意外响应代码 404,如果您签入 PostMan,您会收到 Html 响应,
@Override
public void onErrorResponse(VolleyError error) {
newTworkError(error);
if (error instanceof NetworkError) {
Toast.makeText(LoginActivity.this, "No internet connection", Toast.LENGTH_SHORT).show();
}
else if (error instanceof ServerError) {
Toast.makeText(LoginActivity.this, "Our server is busy please try again later", Toast.LENGTH_SHORT).show();
}
else if (error instanceof AuthFailureError) {
Toast.makeText(LoginActivity.this, "AuthFailure Error please try again later", Toast.LENGTH_SHORT).show();
}
else if (error instanceof ParseError) {
Toast.makeText(LoginActivity.this, "Parse Error please try again later", Toast.LENGTH_SHORT).show();
}
else if (error instanceof NoConnectionError) {
Toast.makeText(LoginActivity.this, "No connection", Toast.LENGTH_SHORT).show();
}
else if (error instanceof TimeoutError) {
Toast.makeText(LoginActivity.this, "Server time out please try again later", Toast.LENGTH_SHORT).show();
}error.printStackTrace();}