4

我为 Android 使用 AndroidQuery(AQuery) 库,我需要使用 StringEntity(some string) 实体创建 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"));
4

2 回答 2

9

它有点隐蔽,但 AjaxCallback 有一个私有method字段(和相应的设置器),用于确定要使用的 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 )

于 2013-01-04T20:11:28.753 回答
-4

AndroidQuery 通常不支持 PUT 和 DELETE 请求。:( 伤心。

于 2012-06-17T22:52:38.880 回答