我正在尝试在Volley中编写POST调用,以将
XML正文发送到服务器.我无法正确设置Content-Type标头.
基本的StringRequest如下所示:
StringRequest folderRequest = new StringRequest(Method.POST,submitInterviewUrl,myListener,myErrorListener) { @Override public byte[] getBody() throws AuthFailureError { String body = "some text"; try { return body.getBytes(getParamsEncoding()); } catch (UnsupportedEncodingException uee) { throw new RuntimeException("Encoding not supported: " + getParamsEncoding(),uee); } } @Override public Map<String,String> getHeaders() throws AuthFailureError { Map<String,String> headers = new HashMap<String,String>(); headers.put("Content-Type","application/xml"); return headers; } };
我重写getHeaders()以提供我想要的Content-Type标头 – application / xml.
这是基于与此类似的建议问题:
> Android Volley Post Request Header not changing
发送请求后,Volley会自动添加第二个Content-Type标头,因此标题如下所示:
Content-Type: application/xml Content-Type: application/x-www-form-urlencoded; charset=UTF-8
如何设置正确的标题?或删除不正确的标题?
我已尝试跟踪基本请求代码,但无法找到此额外标头的来源.
解决方法
Volley不会将Content-Type标头与其他标头的处理方式相同.特别是,重写getHeaders()以更改内容类型并不总是有效.
执行此操作的正确方法是覆盖getBodyContentType():
public String getBodyContentType() { return "application/xml"; }
我通过查看JsonRequest类的代码找到了这个.
Delyan在回答这个相关问题时也提到了这个问题:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。