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

时间:2012-06-15 17:39:10

标签: 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"));

2 个答案:

答案 0 :(得分:8)

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

所以,而不是:

.header("_method", "PUT"));

使用

.method(AQuery.METHOD_PUT)

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

答案 1 :(得分:-4)

AndroidQuery一般不支持PUT和DELETE请求。 :(伤心。