Android Volley BasicNetwork.performRequest:意外的响应代码412

时间:2015-03-22 13:41:58

标签: android json android-volley

我的logcat中有这个错误 我用Volley发送请求。

E/Volley﹕ [2040] BasicNetwork.performRequest: Unexpected response code 412 for http:/myserver/index.php

没有,没有其他错误。
没有行错误,没有。

我不知道该怎么做。

4 个答案:

答案 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();}