getUsers(@Field-6ren">
gpt4 book ai didi

android - Retrofit 2 - POST 请求变成了 GET?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:30:07 26 4
gpt4 key购买 nike

我的POST 请求一直以GET 形式发送并被API 端点拒绝

MyService 类

@FormUrlEncoded
@POST("api/users/")
Call<List<User>> getUsers(@FieldMap HashMap<String, String> parameters);

请求码

Gson builder = new GsonBuilder().setLenient().create();
Retrofit client = new Retrofit.Builder()
.baseUrl(Constants.API_ENDPOINT_TEST_URL)
.addConverterFactory(GsonConverterFactory.create(builder))
.build();
mApiService = client.create(MyService.class);
Call<List<User>> call = mApiService.getUsers(mParameters);
call.enqueue(new Callback<List<User>>() {
@Override
public void onResponse(Call<List<User>> call, Response<List<User>> response) {
mResponse = response.body();
mResponseObserver.onFinish(mResponse);
}

@Override
public void onFailure(Call<List<User>> call, Throwable t) {
mResponseObserver.onFailure();
}
});

但是服务器拒绝它,因为它以 GET 请求形式到达服务器!?使用调试器检查后,我看到了:

rawResponse.request.method = GET

这是显示改造请求对象的监 window 口的屏幕截图:

screenshot

如您所见,请求方法是GET。但奇怪的是在标签中,它显示了一个带有POST方法的请求对象?

我是不是错过了什么?

更新

我添加了日志拦截器,这是日志:

D/OkHttp: --> POST http://***/api/users/ http/1.1
D/OkHttp: Content-Type: application/x-www-form-urlencoded
D/OkHttp: Content-Length: 56
D/OkHttp: --> END POST
D/OkHttp: <-- 200 OK https://***/api/users/ (388ms)
D/OkHttp: Date: Thu, 01 Sep 2016 11:50:23 GMT
D/OkHttp: Server: Apache
D/OkHttp: X-Powered-By: PHP/5.4.34
D/OkHttp: Cache-Control: max-age=2592000
D/OkHttp: Expires: Sat, 01 Oct 2016 11:50:23 GMT
D/OkHttp: Vary: Accept-Encoding
D/OkHttp: Content-Type: application/json; charset=UTF-8
D/OkHttp: Set-Cookie: SESSION_DEFAULT=***; expires=Sun, 04-Sep-2016 11:50:24 GMT; path=/; HttpOnly
D/OkHttp: Set-Cookie: COOKIE[***]=***; path=/; httponly
D/OkHttp: Connection: close
D/OkHttp: <-- END HTTP

看起来请求是一个POST。但是,服务器仍然返回错误消息,说请求方法是 GET

嗯,我会深入研究一下。

最佳答案

实际上,问题是两个因素的结合:

  1. 使用了错误的请求协议(protocol)(http 而不是 https)
  2. 服务器响应错误协议(protocol)的奇怪消息:“不支持 GET”。

无论如何,感谢@nshmura 你的助手。

关于android - Retrofit 2 - POST 请求变成了 GET?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39269673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com