gpt4 book ai didi

android - AsyncHttpClient:传递的 contentType 会被忽略,因为 HttpEntity 设置了内容类型

转载 作者:行者123 更新时间:2023-11-29 14:48:31 25 4
gpt4 key购买 nike

我正在尝试使用 android httpclient (loopj) 发布一些数据。我在其正文中添加了一些 json 数据并设置了请求 header 。但它显示 AsyncHttpClient:传递的内容类型将被忽略,因为 HttpEntity 设置了内容类型。有谁知道如何解决这个问题?

 public static void post(Activity context,String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
try {
JSONObject jsonParams = new JSONObject();
JSONObject innerObject = new JSONObject();
innerObject.put("Name", "@MODE");
innerObject.put("ParamType", "8");
innerObject.put("Value", "0");
JSONArray ar = new JSONArray();
ar.put(innerObject);
try {
jsonParams.put("ProcName", "Core.MENUS_SPR");
jsonParams.put("dbparams", ar);

Log.i("jsonParams.toString()",""+jsonParams.toString());

StringEntity se = null;
try {
se = new StringEntity(jsonParams.toString());


} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return;
}
client.post(context, (url), se, "application/json", responseHandler);


} catch (JSONException e) {
e.printStackTrace();
}

} catch (Exception e) {
e.printStackTrace();
}

}

最佳答案

在发布之前写这个然后它会起作用。

se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));

原因是一旦您使用某个实体,它将忽略帖子中给出的内容类型并使用实体的内容。因此,上面的行将解决您的问题。


我深入研究了源代码,发现您在 post(..) 中传递的内容类型将被忽略,如果它存在,那么您将在日志中出现此错误。

Passed contentType will be ignored because HttpEntity sets content type

但是不要担心,一旦您将内容类型提供给您的实体,它就会起作用。要消除此错误,您可以在 post(..) 的内容类型中传递 null。

AsyncHttpClient.java 中的一些代码:

if (contentType != null) {
if (uriRequest instanceof HttpEntityEnclosingRequestBase && ((HttpEntityEnclosingRequestBase) uriRequest).getEntity() != null) {
Log.w(LOG_TAG, "Passed contentType will be ignored because HttpEntity sets content type");
} else {
uriRequest.setHeader(HEADER_CONTENT_TYPE, contentType);
}
}

关于android - AsyncHttpClient:传递的 contentType 会被忽略,因为 HttpEntity 设置了内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26842090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com