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,此处并未显示所有代码。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...