使用带有PUT请求的AQuery库和StringEntity(String)

GeX*_*GeX 4 android http request

我使用Android的AndroidQuery(AQuery)库,我需要使用StringEntity(某个字符串)实体创建PUT请求.

我的代码,出了什么问题?你的建议?我尝试使用没有".header("_ method","PUT")"

HttpEntity entity = null;
    try {
        entity = new StringEntity(stringData, HTTP.UTF_8);
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }

    Map<String, Object> params = new HashMap<String, Object>();
    params.put(AQuery.POST_ENTITY, entity);

    AQuery aq = new AQuery(this);
    aq.progress(pDialog).ajax(url, params, String.class, new AjaxCallback<String>() {

        @Override
        public void callback(String url, String json, AjaxStatus status) {
            if(status.getCode() == 200) {

            } else {

            }

        }
    }.header("Content-Type", "application/x-www-form-urlencoded") 
    .header("_method", "PUT"));
Run Code Online (Sandbox Code Playgroud)

kar*_*arl 9

它有点隐藏,但AjaxCallback有一个私有method字段(和相应的setter)用于确定要使用的HTTP方法.默认情况下,它使用METHOD_DETECT,它试图找出使用的内容,当你添加参数时,它会认为它是一个POST.

所以,而不是:

.header("_method", "PUT"));
Run Code Online (Sandbox Code Playgroud)

使用

.method(AQuery.METHOD_PUT)
Run Code Online (Sandbox Code Playgroud)

(参考:https://github.com/androidquery/androidquery/blob/master/src/com/androidquery/callback/AbstractAjaxCallback.java#L280)