gpt4 book ai didi

java - Android:从 `retrofit 2` 调用的 RESTful API 说 `Method Not Allowed`

转载 作者:行者123 更新时间:2023-12-01 18:04:33 30 4
gpt4 key购买 nike

我使用 Java 和 Jersey 开发了一个 Web 服务。现在我正在尝试使用 android 连接到它,调用它的方法并获取数据。

以下是网络服务的相关部分。

import bean.PatientBean;
import bean.UserBean;
import db.PatientImpl;
import db.PatientInterface;
import db.UserImpl;
import db.UserInterface;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/patient")
public class PatientJSONService
{

@POST
@Path("/getPatientById/{Id}")
@Produces(MediaType.APPLICATION_JSON)
public PatientBean getPatientById(@PathParam("Id")String Id)
{
PatientInterface patinetInterface=new PatientImpl();
PatientBean patientById = patinetInterface.getPatientById(Id);
return patientById;
}

}

在我的 Android 应用程序中,我使用 Retrofit 2 来调用上述 REST 方法。

private void restCall()
{
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss")
.create();

Retrofit retrofit = new Retrofit.Builder()
.baseUrl(URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();

YourEndpoints request = retrofit.create(YourEndpoints.class);


Call<PatientBean> yourResult = request.getPatientById("ERTA001");
yourResult.enqueue(new Callback<PatientBean>() {
@Override
public void onResponse(Call<PatientBean> call, Response<PatientBean> response) {

try {
// Log.d("MainActivity", "RESPONSE_A: " + response.body().toString());
Log.d("MainActivity", "RESPONSE: " + response.errorBody().string());
}
catch(Exception e)
{
e.printStackTrace();
}



}

@Override
public void onFailure(Call<PatientBean> call, Throwable t) {
try {
t.printStackTrace();
Log.d("MainActivity", "RESPONSE: "+"FAILED");
}
catch(Exception e)
{
e.printStackTrace();
}
}

});
}

下面是我的 EndPoint 界面

public interface YourEndpoints {

@POST("patient/getPatientById/{Id}")
Call<PatientBean>getPatientById(@Body String Id);
}

但是,当我运行代码时,我从 Apache Tomcat Server 收到 HTML 响应,基本上显示 HTTP 状态 405 - 不允许的方法

如何解决这个问题?

最佳答案

将您的 ws 端点更改为 @GET,然后将您的其余客户端更改为以下代码:

@GET("patient/getPatientById/{Id}")
Call<PatientBean>getPatientById(@Path("Id") String Id);

应该使用 GET 从服务器检索数据。应使用 POST 向服务器发送数据。

关于java - Android:从 `retrofit 2` 调用的 RESTful API 说 `Method Not Allowed`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37726649/

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