【问题标题】:How to write a @POST request correctly?如何正确编写@POST 请求?
【发布时间】: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


【解决方案1】:

对我来说,它有效:

@Multipart
    @POST("/testAPI")
    fun createPost(@Part("a") post: String?,
                   @Part("session") post2: String?): Call<Post?>?

我用@Part

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-01
    • 2011-05-12
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多