如何解决Android - 如何在正文中使用带有元素标签的 Volley HTTP Post
我一直在尝试弄清楚如何在正文中使用带有 HTML 元素标签的 Volley,但可以使用一些帮助。
例如,对于我使用的 API,使用 POST 创建用户所需的格式如下所示:
{
"username":"","password":"","email":"someone@example.invalid","first_name":"John","last_name":"Doe","phone_number":"202-555-0113","address":"123 Road Name","city":"Jamesetown","state":"AZ","postal_code":"12345","country":"United States",}
...我能够在Android端格式化并成功处理POST,如下所示:
@Override
public byte[] getBody() throws AuthFailureError {
Map<String,String> bodykeyvalue = new HashMap<>();
bodykeyvalue.put("username",accountName);
bodykeyvalue.put("password",accountPassword);
bodykeyvalue.put("email",email);
bodykeyvalue.put("first_name",first);
bodykeyvalue.put("last_name",last);
// etc.
return new JSONObject(bodykeyvalue).toString().getBytes();
}
然而,当涉及到需要使用元素标签格式化的 POST 时,我似乎无法弄清楚在我的 Volley 正文中将如何格式化。如何将其放入 MAP 对象中?在任何回复中,如果 getBodyContentType 也需要更改,您能否也通知我?标头内容类型应保持不变。谢谢!
<sci_request version="1.2">
<data_service>
<targets>
<device id="1234-5678" />
</targets>
<requests>
<device_request target_name="myTarget">
some request string value
</device_request>
</requests>
</data_service>
</sci_request>
解决方法
我发现这比预期容易得多......只需按如下方式更改正文:
@Override
public byte[] getBody() throws AuthFailureError {
String data =
"<sci_request version=\"1.2\">" +
"<data_service>" +
"<targets>" +
"<device id=\"1234-5678\" />" +
"</targets>" +
"<requests>" +
"<device_request target_name=\"myTarget\">" +
"some request string value" +
"</device_request>" +
"</requests>" +
"</data_service>" +
"</sci_request>";
return data.getBytes();
}
需要注意的是,这是一个 Volley StringRequest,此处并未显示所有代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。