使用AQuery库进行PUT请求和StringEntity(String)操作

4
我使用 AndroidQuery(AQuery) 库用于 Android 开发,我需要创建一个包含 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个回答

9

有点隐蔽,但是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)

这段代码是关于AndroidQuery库中的抽象Ajax回调类的。它定义了一个onError方法,该方法在请求失败时被调用。如果您使用AndroidQuery库进行网络请求,可以使用此方法来处理错误情况。

-4

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


看起来根据批准的答案,它是被支持的。 - powerj1984

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接