【发布时间】:2021-01-25 21:52:34
【问题描述】:
我试图发出@POST 请求。当我提出这个要求时
@POST("/testAPI")
@Headers("token: rAhUCUo-wz-Sbtwjt1")
@FormUrlEncoded
Call<GetEntires> getEntires(@Field("a")String method,
@Field("session")String SessionId);
我得到响应:站点 API 的 HTML 代码,但是当我在特殊程序(Chrome 应用程序 - ARC)中发出请求时,我得到了正确的响应,这等于来自 API 文档的响应。 来自 API 文档的请求示例:
curl --header "token: EXAMPLETOKEN" --data "a=new_session" https://bnet.i-partner.ru/testAPI/
我在哪里犯错了?
更新: 如何查看来自应用 ARC 的文本请求:
POST /testAPI/ HTTP/1.1
HOST: bnet.i-partner.ru
token: rAhUCUo-wz-Sbtwjt1
content-type: multipart/form-data; boundary=----WebKitFormBoundaryLA3TDEc7BbGOFNMS
content-length: 256
------WebKitFormBoundaryLA3TDEc7BbGOFNMS
Content-Disposition: form-data; name="a"
get_entries
------WebKitFormBoundaryLA3TDEc7BbGOFNMS
Content-Disposition: form-data; name="session "
tThEPaP7uvGWje176p
------WebKitFormBoundaryLA3TDEc7BbGOFNMS--
以及来自服务器的响应:
{
"status": 1,
"data": [
[],
],
}
【问题讨论】:
-
出于好奇,您是否像在 ARC 中一样添加了
"Content-Type: multipart/form-data"标头进行改造?我不确定它是否默认添加 -
在问题的更新中,我展示了如何在文本中查看请求和响应,类型为
multipart/form-data它工作 -
所以只是缺少内容类型?
-
好的,谢谢。我刚刚添加了
@Multipart,并使用@Part,一切正常
标签: android post retrofit retrofit2