java - Jersey - 不允许使用 405 方法
问题描述
我是 Web 服务的新手。如果参数(标识符和密码)被正确通知,我有一个工作端点,它会返回一个带有人员数据的 JSON。
像这样:
http://www.issdigitalthe.com.br/controleacesso/servico/api/login/4/SMT/000000000000/password/false
其中 000000000000 是我的标识符,“password”是我的密码。
使用 PostMan (POST) 进行测试,这是我的回报:
"id": 40001002131,
"idOriginal": 123131,
"cpfCnpj": "000000000",
"nome": "JOHN DOE",
"idCargo": 131313131,
"descricaoCargo": "Usuário responsável por analisar e Deferir/Indeferir os Protocolos.",
"idDepartamento": 4000200000000761,
"descricaoDepartamento": "Departamento para usuários ",
"login": "000000000",
"email": "john@gmail.com",
"ultimoAcesso": 1537824078846,
"certificadoDigital": "N",
"dataCriacao": null,
"bairro": "Bairro",
"cep": "64020340",
"complemento": "Quadra 00 Casa 111",
"dddCelular": "86 ",
"dddTelefone": "86 ",
"celular": "99999999",
"telefone": "86 ",
"uf": "PI",
"municipio": "SÃO PAULO",
我必须使用该服务来检查退货是否有效。这是我的代码:
import javax.faces.bean.ManagedBean;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
@Path("/")
@ManagedBean
public class WebServiceLoginMB {
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON + MediaType.TEXT_HTML)
public String getDados() {
Client c = Client.create();
WebResource wr = c.resource("//www.issdigitalthe.com.br/controleacesso/servico/api/login/4/SMT/000000000000/password/false);
return wr.get(String.class);
}
}
起初,我只是想在 Glassfish 控制台上查看返回,然后我会检查返回是否正确。但我总是得到“返回 405 Method Not Allowed 的响应状态”。
它是这样工作的:
public static void ws(String user, String pass) {
try {
Client client = Client.create();
WebResource webResource = client.resource(
"http://www.issdigitalthe.com.br/controleacesso/servico/api/login/4/SMT/"+ user + "/"+ pass + "/false");
ClientResponse response = webResource.type("application/json").post(ClientResponse.class);
String output = response.getEntity(String.class);
Gson gson = new Gson();
PessoaNota pessoa = gson.fromJson(output, PessoaNota.class);
System.out.println(pessoa.getNome());
} catch (Exception e) {
e.printStackTrace();
}
}
我知道它还有一些需要调整的地方,但是第一个问题已经解决了。感谢所有帮助过的人。
解决方案
您收到此错误是因为您正在执行 HTTP GET 调用,而在邮递员中您尝试了 HTTP POST。尝试像这样拨打电话
public String getDados() {
Client c = Client.create();
WebResource wr = c.resource("http://www.issdigitalthe.com.br/controleacesso/servico/api/login/4/SMT/000000000000/password/false);
return wr.post(String.class);
}
推荐阅读
- visual-studio-code - VS Code:Cmake 扩展在侧边栏没有按钮
- python - 用户的独特日历 - Python
- javascript - 使用 Laravel 隐藏数据表中的行
- mysql - 创建表的更好方法是什么?
- javascript - 如何在 React Native 中将组件中的函数调用作为道具传递?
- cplex - 如何使 CPLEX 不输出到 Julia 中的终端窗口
- list - 如何摆脱由 EditMode 触发的 SwiftTUI List 奇怪的动画和间距?
- amazon-web-services - 如何使用 CFT 启动具有 CreditSpecification 的 Spot 车队?
- swift - 在 Swift 中向 UIViewPropertyAnimator 添加完成处理程序
- java - Google Cloud Storage Java API 中的 NoSuchMethodError