gpt4 book ai didi

android - 使用 Apache HttpDelete 为 Rest Web 服务 Android 传递参数和 header

转载 作者:行者123 更新时间:2023-11-30 03:37:55 25 4
gpt4 key购买 nike

我有一个 HTTP DELETE 方法的终点。我想传递一些 header ,更具体地说是 Content-Type=application/x-www-form-urlencoded。还有一些参数,在服务器端将根据这些参数决定应删除哪条记录。 我无法访问服务器实现。

我正在使用 apache HTTP client .我的 HTTP DELETE 方法如下:

private String doDelete(String url, Map<String,String> params, Map<String,String> headerMap){

HttpClient httpClient = new DefaultHttpClient(httpParams);
HttpDelete httpDelete = new HttpDelete(httpRequestWrapper.getUrl());

if(headerMap != null){
for(String headerName : headerMap.keySet()){
httpDelete.addHeader(headerName, headerMap.get(headerName));
}
}

if(params != null){
for(String paramName : params.keySet()){
httpParams.setParameter(paramName, params.get(paramName));
}
httpDelete.setParams(httpParams);
}

HttpResponse httpResponse = httpClient.execute(httpDelete);
HttpEntity httpEntity = httpResponse.getEntity();
String responseStr = getASCIIContentFromEntity(httpEntity);
return responseStr;
}

问题是,我看到(在 Debug模式下)参数在我这边的删除请求中正确传递。但在服务器端参数收到空白。有什么方法可以成功传递参数和 header 吗?

感谢任何帮助。

最佳答案

逐字传递 header 可能会导致问题。

考虑到上述情况,请注意,在实现时,HttpDelete 方法不接受主体,因此与您的请求相关联的特定 Content-Type header 可能会导致容器混淆。

尝试从客户端中省略包含 Content-Type 的 header ,看看是否能解决您的问题。

编辑啊!!发现问题了! setParams 方法令人困惑。根据 HTTP Client 4.x 的文档

Provides parameters to be used for the processing of this message.

您在代码中设置的参数不会被传递,因为它们被传送到执行请求的底层客户端。

This SO article为您的尝试定义适当的方法。

关于android - 使用 Apache HttpDelete 为 Rest Web 服务 Android 传递参数和 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16336576/

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