Android - 如何使用 Volley HTTP Post 和 body 中的元素标签
Android - How to use Volley HTTP Post with element tags in body
我一直在尝试弄清楚如何在 body 中将 Volley 与 HTML 元素标签一起使用,但需要一些帮助。
例如,对于我正在使用的 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 body 中如何格式化它。我如何将其放入 MAP object?在任何回复中,如果 getBodyContentType 也需要更改,您能否也告诉我? header content-type 应该保持不变。谢谢!
<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,这里并未显示所有代码。
我一直在尝试弄清楚如何在 body 中将 Volley 与 HTML 元素标签一起使用,但需要一些帮助。
例如,对于我正在使用的 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 body 中如何格式化它。我如何将其放入 MAP object?在任何回复中,如果 getBodyContentType 也需要更改,您能否也告诉我? header content-type 应该保持不变。谢谢!
<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,这里并未显示所有代码。