使用 okhttp 对整数值进行 post 请求
Use okhttp to do post request with integer values
我正在尝试将 POST 请求连同正文发送到服务器。
一些正文值应该是整数而不是字符串。
我正在使用带有 okhttp 的多部分构建器,但它只接受名称-值对中的字符串值
如何将整数值作为整数发送(无引号)
谢谢
multipart/form-data
值的格式是未加引号的原始字符串。所以整数和字符串之间没有区别,就像 JSON 这样的格式一样。 Content-Type
multipart/form-data
请求中的每个字段也可以定义自己的 Content-Type
。字段可以是 application/json
和 JSON 文本值,text/html
和 HTML 文本值,甚至 application/octet
包含原始二进制数据。
原始请求的格式如下:
POST /example.com HTTP/1.1
<additional headers>
Content-Type: multipart/form-data; boundary=vzgD3VXVRH
Content-Length: 1250
--vzgD3VXVRH
Content-Disposition: form-data; name="string"
text value
--vzgD3VXVRH
Content-Disposition: form-data; name="number"
12345
--vzgD3VXVRH
Content-Disposition: form-data; name="json"; filename="example.json"
Content-Type: application/json
{"string":"text value","number":12345}
--vzgD3VXVRH
Content-Disposition: form-data; name="text"; filename="example.txt"
Content-Type: text/plain
The quick brown fox jumps over the lazy dog
--vzgD3VXVRH
Content-Disposition: form-data; name="html"; filename="example.html"
Content-Type: text/html
<!DOCTYPE html>
<html>
<head><title>Page Title</title></head>
<body><h1>Simple HTML doc</h1></body>
</html>
--vzgD3VXVRH
Content-Disposition: form-data; name="binary"; filename="example.bin"
Content-Type: application/octet-stream
<raw binary data>
--vzgD3VXVRH--
有关 multipart/form-data 规范的更多信息 RFC 7578。
更新:
通过澄清您正在 post 向 this API 发送请求,您应该能够 post 使用 application/x-www-form-urlencoded
表单参数而不是 multipart/form-data
。 multipart/form-data
更适合 post 二进制数据或上传文件的请求。
您可以在 OkHttp 中执行以下操作:
OkHttpClient client = new OkHttpClient();
String userId = "12345";
RequestBody formBody = new FormBody.Builder()
.add("mealTypeId", "7")
.add("unitId", "321")
.add("amount", "4.25")
.add("date", "2019-03-18")
.build();
Request request = new Request.Builder()
.url("https://api.fitbit.com/1/user/" + userId + "/foods/log.json")
.post(formBody)
.build();
try {
Response response = client.newCall(request).execute();
} catch (IOException e) {
// handle error
}
我正在尝试将 POST 请求连同正文发送到服务器。 一些正文值应该是整数而不是字符串。
我正在使用带有 okhttp 的多部分构建器,但它只接受名称-值对中的字符串值
如何将整数值作为整数发送(无引号)
谢谢
multipart/form-data
值的格式是未加引号的原始字符串。所以整数和字符串之间没有区别,就像 JSON 这样的格式一样。 Content-Type
multipart/form-data
请求中的每个字段也可以定义自己的 Content-Type
。字段可以是 application/json
和 JSON 文本值,text/html
和 HTML 文本值,甚至 application/octet
包含原始二进制数据。
原始请求的格式如下:
POST /example.com HTTP/1.1
<additional headers>
Content-Type: multipart/form-data; boundary=vzgD3VXVRH
Content-Length: 1250
--vzgD3VXVRH
Content-Disposition: form-data; name="string"
text value
--vzgD3VXVRH
Content-Disposition: form-data; name="number"
12345
--vzgD3VXVRH
Content-Disposition: form-data; name="json"; filename="example.json"
Content-Type: application/json
{"string":"text value","number":12345}
--vzgD3VXVRH
Content-Disposition: form-data; name="text"; filename="example.txt"
Content-Type: text/plain
The quick brown fox jumps over the lazy dog
--vzgD3VXVRH
Content-Disposition: form-data; name="html"; filename="example.html"
Content-Type: text/html
<!DOCTYPE html>
<html>
<head><title>Page Title</title></head>
<body><h1>Simple HTML doc</h1></body>
</html>
--vzgD3VXVRH
Content-Disposition: form-data; name="binary"; filename="example.bin"
Content-Type: application/octet-stream
<raw binary data>
--vzgD3VXVRH--
有关 multipart/form-data 规范的更多信息 RFC 7578。
更新:
通过澄清您正在 post 向 this API 发送请求,您应该能够 post 使用 application/x-www-form-urlencoded
表单参数而不是 multipart/form-data
。 multipart/form-data
更适合 post 二进制数据或上传文件的请求。
您可以在 OkHttp 中执行以下操作:
OkHttpClient client = new OkHttpClient();
String userId = "12345";
RequestBody formBody = new FormBody.Builder()
.add("mealTypeId", "7")
.add("unitId", "321")
.add("amount", "4.25")
.add("date", "2019-03-18")
.build();
Request request = new Request.Builder()
.url("https://api.fitbit.com/1/user/" + userId + "/foods/log.json")
.post(formBody)
.build();
try {
Response response = client.newCall(request).execute();
} catch (IOException e) {
// handle error
}